Как корректно поднять окно?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
vvs_adm
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1492
Зарегистрирован: 03.02.2005 (Чт) 3:45
Откуда: оттуда ;)

Как корректно поднять окно?

Сообщение vvs_adm » 05.08.2005 (Пт) 1:31

Вроде примитивная задача, при вторичном запуске приложения оно лишь поднимает окно (оно одно) предыдущего приложения.

1) hWnd окна нашел (проверил...)
2) ShowWindow(hWnd, SW_SHOW) - не работает вообще :(
3) ShowWindow(hWnd, SW_SHOWMAXIMIZED) - не работает, если ShowWindow вызывается из откомпелированного EXE, но работает, если вызывается из VB отладчика :shock: Но после этого, как и после части из п.4. все окна виндов некоторое время отказывались активироваться по клику на панели задач, только путем сворачивания и разворачивания можно добраться до нужного...
4) Затем некоторые варианты (теперь уже и не упомню, чего только не пробовал, это были самые различные комбинации из SetActiveWindow, SetForegroundWindow, SetWindowPos, PostMessage, SendMessage и шаманского бубна...) поднимали окно, если оно свернуто, но оно оставалось позади, а при повторе (когда оно уже развернулось) оно все-таки вываливалось наверх, но без фокуса.

Как все-таки его КОРРЕКТНО поднять, и что за фигня с пунктом третьим?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 05.08.2005 (Пт) 3:56

if app.previnstance then appactivate me.caption
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

AlexBlack
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 324
Зарегистрирован: 18.07.2005 (Пн) 19:14
Откуда: Киефф, Юкрейн...

Сообщение AlexBlack » 06.08.2005 (Сб) 12:15

SW_SHOWNORMAL=1 попробуй...

kirrun
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 06.04.2005 (Ср) 15:41
Откуда: Питер

Сообщение kirrun » 06.08.2005 (Сб) 12:23

GSerg, а если поменялся заголовок?
"Единственный безопасный компьютер - это тот, который выключен из электросети, закрыт в сейфе, который зарыт 20 футов под землей в засекреченной местности. И то я не уверен относительно его безопасности."
(Деннис Хьюджес, ФБР)

vvs_adm
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1492
Зарегистрирован: 03.02.2005 (Чт) 3:45
Откуда: оттуда ;)

Сообщение vvs_adm » 07.08.2005 (Вс) 2:53

GSerg писал(а):if app.previnstance then appactivate me.caption

1) Если exe-шник переименовать, то App.Previnstance обломается... Но это ладно, я по другому определяю.
kirrun писал(а):GSerg, а если поменялся заголовок?

2) Заголовок у меня вообще время показывает, так что он вполне может поменяться :), но это неважно, окно я все равно найду.
Но я забыл уточнить, почему у меня такая фигня творится: приложение не только свернуто, но и Visible=False.. Посему AppActivate мало чем отличается от моих сендмеседжей...
AlexBlack писал(а):SW_SHOWNORMAL=1 попробуй...

SW_SHOW+ALL пробовал.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 114

    TopList