![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как, зная имя EXE, определить Handle окна этой программы [D7, WinXP]
dreamse © (2008-02-03 18:57:00)Нужно определить хендл окошка, зная его EXE и полный путь
dreamse (2008-02-03 19:15:00) [21]> ketmar © (03.02.08 19:13) [4]
Пишу утилиту обновления, нужно свои программы запущенные завершать чтобы обновить их новыми файлами а затем заново запустить.
dreamse (2008-02-03 19:14:00) [22]> ketmar © (03.02.08 19:11) [3]
Именно для этого случая я делаю так :
PostMessage(FindWindow(nil, Pchar(GetText(Wnd))), WM_CLOSE, 0, 0);
PostMessage(FindWindow(nil, Pchar(GetText(Wnd))), WM_QUIT, 0, 0);}
KillTask(''); // Хана программе и её окошкам с запросами завершения
По этому предпочтительнее сначала попробывать окуратно закрыть ... а если не поймет при прихлопнуть
Сергей М. (2008-02-03 19:14:00) [23]см. EnumWindows + GetWindowThreadProcessId
ketmar (2008-02-03 19:13:00) [24]другие решения этой задачи обычно заключаются в предоставлении пользователю права решать, какие программы он хочет закрыть, и дальше он их закрывает штатными средствами.
честно, это вполне разумное решение.
если пишешь «программу для клуба» — там можно, например, вообще logout сделать — винда сама всех прихлопнет.
и ты пы.
ketmar (2008-02-03 19:11:00) [25]а если нежно убивать, то оно возьмёт — и пошлёт тебя в пень вместе с твоими сообщениями. не отреагирует, например, и всё. или выведет 25 диалогов «а вы точно-точно хотите закрыть меня?»
dreamse (2008-02-03 19:06:00) [26]В общем задача в следующем. Нужно определить список всех запущенных приложений. Это есть.
Потом выбрать из них те приложения которые мне нужно закрыть.
Отправить им сообщение типа
PostMessage(FindWindow(nil, Pchar(GetText(Wnd))), WM_CLOSE, 0, 0);
В сообщении передается Хендл окошка программы.
Может существуют другие решения этой задачи ?
Смысл отправки такого сообщения в том что приложение успеет обработать выход и корректно завершиться, например удалить свою иконку из трея.
Если же жестко убивать приложение то остаются иконки в трее и пр.
Сергей М. (2008-02-03 19:01:00) [27]Какого окошка-то ?
Приложение в ходе работы может создать кучу окошек, равно как не создать ни одного.
Да и экземпляров приложения может быть более одного.