Развернуть окно.
От: Andreww  
Дата: 03.07.09 08:09
Оценка:
Здравствуйте. Мне надо свернуть и развернуть чужое приложение. И проблема в том, что приложение нормально не разворачивается.
Всякие PostMessage(wnd, WM_SYSCOMMAND, SC_RESTORE, 0), ShowWindowAsync( wnd, SW_SHOWNORMAL ) и SetForegroundWindow( wnd ) я уже перепробовал в разных комбинациях.
Есть ли возможность узнать какое по счету нужное окно в alt-tab панели и столько раз послать alt-tab?
Или можно как-то программно кликнуть по значку окна в панели задач?

Возможно есть еще какие-то способы восстановить окно в то состояние, что было до сворачивания? Что можете посоветовать?
Re: Развернуть окно.
От: theTosh Россия  
Дата: 03.07.09 12:23
Оценка: -1
Здравствуйте, 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)
/Best regards,
Anton V. Deinow
Re[2]: Развернуть окно.
От: Andreww  
Дата: 03.07.09 16:46
Оценка:
Здравствуйте, 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 панели разворачивает игру именно так, как она была свернута.

Так что вопрос в силе.
Re[3]: Развернуть окно.
От: theTosh Россия  
Дата: 03.07.09 17:55
Оценка:
Здравствуйте, Andreww, Вы писали:

<..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. Может это поможет...
/Best regards,
Anton V. Deinow
Re[4]: Развернуть окно.
От: Andreww  
Дата: 06.07.09 16:46
Оценка:
Здравствуйте, theTosh, Вы писали:


T>Вызови перед минимизацией GetWindowPlacement() и посмотри, какие у него flags и showCmd. Может это поможет...



flags — 0
showCmd — SW_SHOWNORMAL
и перед минимизацие, и после RESTORE. А вот rcNormalPosition разные.
Re[5]: Развернуть окно.
От: theTosh Россия  
Дата: 06.07.09 17:11
Оценка:
Здравствуйте, 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, при отправке ему сообщений всё нормально проходит)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.