Здравствуйте. Мне надо свернуть и развернуть чужое приложение. И проблема в том, что приложение нормально не разворачивается.
Всякие PostMessage(wnd, WM_SYSCOMMAND, SC_RESTORE, 0), ShowWindowAsync( wnd, SW_SHOWNORMAL ) и SetForegroundWindow( wnd ) я уже перепробовал в разных комбинациях.
Есть ли возможность узнать какое по счету нужное окно в alt-tab панели и столько раз послать alt-tab?
Или можно как-то программно кликнуть по значку окна в панели задач?
Возможно есть еще какие-то способы восстановить окно в то состояние, что было до сворачивания? Что можете посоветовать?
Здравствуйте, Andreww, Вы писали:
A>Здравствуйте. Мне надо свернуть и развернуть чужое приложение. И проблема в том, что приложение нормально не разворачивается. A>Всякие PostMessage(wnd, WM_SYSCOMMAND, SC_RESTORE, 0), ShowWindowAsync( wnd, SW_SHOWNORMAL ) и SetForegroundWindow( wnd ) я уже перепробовал в разных комбинациях. A>Есть ли возможность узнать какое по счету нужное окно в alt-tab панели и столько раз послать alt-tab? A>Или можно как-то программно кликнуть по значку окна в панели задач?
A>Возможно есть еще какие-то способы восстановить окно в то состояние, что было до сворачивания? Что можете посоветовать?
Свернуть: ShowWindow(HWND,SW_SHOWMINIMIZED)
Так ваще спрятать: ShowWindow(HWND,SW_HIDE)
Развернуть, как было: ShowWindow(HWND,SW_RESTORE)
Здравствуйте, theTosh, Вы писали:
T>Здравствуйте, Andreww, Вы писали:
A>>Здравствуйте. Мне надо свернуть и развернуть чужое приложение. И проблема в том, что приложение нормально не разворачивается. A>>Всякие PostMessage(wnd, WM_SYSCOMMAND, SC_RESTORE, 0), ShowWindowAsync( wnd, SW_SHOWNORMAL ) и SetForegroundWindow( wnd ) я уже перепробовал в разных комбинациях. A>>Есть ли возможность узнать какое по счету нужное окно в alt-tab панели и столько раз послать alt-tab? A>>Или можно как-то программно кликнуть по значку окна в панели задач?
A>>Возможно есть еще какие-то способы восстановить окно в то состояние, что было до сворачивания? Что можете посоветовать?
T>Свернуть: ShowWindow(HWND,SW_SHOWMINIMIZED) T>Так ваще спрятать: ShowWindow(HWND,SW_HIDE) T>Развернуть, как было: ShowWindow(HWND,SW_RESTORE)
Спасибо, но ShowWindow(HWND,SW_RESTORE) не помогло.
Точнее разворачивает, но не так, как оно было до сворачивания. ( до сворачивания игра была в полном окне, после разворачивания — в оконном режиме ). Клик же по иконке на панели задач или выбор в alt-tab панели разворачивает игру именно так, как она была свернута.
<..skip..>
T>>Свернуть: ShowWindow(HWND,SW_SHOWMINIMIZED) T>>Так ваще спрятать: ShowWindow(HWND,SW_HIDE) T>>Развернуть, как было: ShowWindow(HWND,SW_RESTORE)
A>Спасибо, но ShowWindow(HWND,SW_RESTORE) не помогло.
A>Точнее разворачивает, но не так, как оно было до сворачивания. ( до сворачивания игра была в полном окне, после разворачивания — в оконном режиме ). Клик же по иконке на панели задач или выбор в alt-tab панели разворачивает игру именно так, как она была свернута.
A>Так что вопрос в силе.
Вызови перед минимизацией GetWindowPlacement() и посмотри, какие у него flags и showCmd. Может это поможет...
Здравствуйте, Andreww, Вы писали:
T>>Вызови перед минимизацией GetWindowPlacement() и посмотри, какие у него flags и showCmd. Может это поможет...
A>flags — 0 A>showCmd — SW_SHOWNORMAL A>и перед минимизацие, и после RESTORE. А вот rcNormalPosition разные.
А в то время, когда окно минимизировано showCmd какое? Ты уверен, что нужное окно дёргаешь? Класс окна какой?
Вот еще попробуй для восстановления функцию OpenIcon().
/Best regards,
Anton V. Deinow
Re[6]: Развернуть окно.
От:
Аноним
Дата:
06.10.09 18:03
Оценка:
Здравствуйте, theTosh, Вы писали:
T>Здравствуйте, Andreww, Вы писали:
T>>>Вызови перед минимизацией GetWindowPlacement() и посмотри, какие у него flags и showCmd. Может это поможет...
A>>flags — 0 A>>showCmd — SW_SHOWNORMAL A>>и перед минимизацие, и после RESTORE. А вот rcNormalPosition разные.
T>А в то время, когда окно минимизировано showCmd какое? Ты уверен, что нужное окно дёргаешь? Класс окна какой?
T>Вот еще попробуй для восстановления функцию OpenIcon().
А что делать, если я знаю только hwnd главной формы, у которой в свою очередь может быть открыто какое-нибудь модальное окно?
Как это реализовано при переключении по Alt+Tab?
Re[7]: Развернуть окно.
От:
Аноним
Дата:
07.10.09 13:54
Оценка:
А>А что делать, если я знаю только hwnd главной формы, у которой в свою очередь может быть открыто какое-нибудь модальное окно? А>Как это реализовано при переключении по Alt+Tab?
Проблема решена, т.к. приложение написано на Delphi, то главным окном является TApplication, при отправке ему сообщений всё нормально проходит)