Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Ввод/Вывод, Сеть. Межпроцессное взаимодействие _ QProcess и разворачивание свёрнутого окна процесса

Автор: Анна 17.10.2017, 13:39

Задача в следующем:
1.При нажатии на кнопку, запустить стороннее приложение (редактор).
2.Если приложение уже запущено, развернуть его окно.

С первым пунктом никаких проблем. Использую QProcess.
Но как развернуть окно уже запущенного приложения, не знаю.

Дело происходит в Windows 7.

Я так поняла, мне надо выполнить какую-то консольную команду винды, имея на руках только Q_ID запущенного мной процесса.

Автор: Алексей1153 18.10.2017, 7:09

Анна, можно попробовать так - потрясти за винапи

найти главное окно процесса, вот тут есть пример
http://forums.codeguru.com/showthread.php?392273-RESOLVED-How-to-get-window-s-HWND-from-it-s-process-handle

достать адрес оконной процедуры (параметр GWL_WNDPROC)
https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms633584(v=vs.85).aspx

и при помощи функции
https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms633571(v=vs.85).aspx

отправить сообщение WM_SHOWWINDOW
https://msdn.microsoft.com/en-us/library/windows/desktop/ms632645(v=vs.85).aspx

Автор: Анна 23.10.2017, 16:01

Цитата(Алексей1153 @ 18.10.2017, 7:09) *
Анна, можно попробовать так - потрясти за винапи

Спасибо.

Я поняла, что тупо виндовыми командами задачу не решить, и приуныла. Есть утилитки из третьих рук, которые позволяют и все окна процесса получить и шевелить этими окошками, но не охота таскать эту "тележку" с собой.


Автор: Алексей1153 24.10.2017, 7:21

Анна, а что приунывать то, команды и утилиты эти же функции используют. Поэтому и таскать ничего не надо - просто вызываешь сама, если программа скомпилирована под винду

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)