Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как, зная имя EXE, определить Handle окна этой программы [D7, WinXP]


Страницы:   1 2

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]

Какого окошка-то ?

Приложение в ходе работы может создать кучу окошек, равно как не создать ни одного.

Да и экземпляров приложения может быть более одного.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо