Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.04.24;
Скачать: CL | DM;

Вниз

Как зная хендл процесса найти главное окно приложения или наоборо   Найти похожие ветки 

 
igornov   (2003-02-26 18:00) [0]

Hi All!
Как сделать описанное в теме? Мне нужно зная хенл процесса найти его главное
окно, считать его caption, и если это то, что мне нужно завершить процесс.
Можно конечно просто завершить процесс, но мне это не подходит, поскольку
может быть запущено несколько одинаковых процессов (один exe-файл). Разные у
них только надписи в caption главной формы. Вот и надо выбрать один или
несколько требуемых процессов и зарубить их.
Если можно то приведите примеры или дайте ссылку на них.
Заранее благодарен за ответы и помощь.
--
C уважением Игорь Новосёлов
E-mail: igorn@ingok.com.ua
ICQ: 46732777


 
Clickmaker ©   (2003-02-26 18:36) [1]

Так скорей всего наоборот нужно, по Caption найти процесс и почикать его
FindWindow + GetWindowThreadProcessId + TerminateProcess

но это жестоко, лучше

hwnd := FindWindow(ClassName, Caption);
PostMessage(hwnd, WM_CLOSE, 0, 0);
или PostMessage(hwnd, WM_SYSCOMMAND, SC_CLOSE, 0);


 
Suntechnic ©   (2003-02-26 18:47) [2]

Есть несколько способов.
1) Перебрать все потоки процесса (CreateToolhelp32Snapshot, Thread32First, Thread32Next) и затем перебрать все окна в каждом из потоков (EnumThreadWindows). Существует правда предположение, что первый найденный поток и будет основным, и первое найденное в нём окно и будет "главным", но на это полагаться нельзя, так как об этом ничего не сказано в анотациях к этим ф-циям, а "главное" окно это вообще понятие относительное.

2) Перебрать все окна в системе (например EnumWindows, EnumChildWindows) и найти те которые относятся к заданному процессу. Сделать это можно с помощью ф-ции GetWindowThreadProcessId. Вопрос о "главном" окне опять остаётся открытым.


 
Song ©   (2003-02-26 21:04) [3]

Главное окно можно определить по стилям, например оно обычно всегда видно (WS_VISIBLE), а остальные, как правило, спрятаны.


 
DVM ©   (2003-02-26 21:10) [4]


> Главное окно можно определить по стилям

Ну это нелегко будет сделать. Какой из флагов указывает на то, что окно главное? Со 100% уверенностью нельзя по сочетанию флагов это сказать.


 
Song ©   (2003-02-26 21:11) [5]

>>Со 100% уверенностью
Я для этого и употребил оборот "как правило"


 
Бильбасумкин   (2003-02-26 22:04) [6]

Удалено модератором
Примечание: Воистину



Страницы: 1 вся ветка

Текущий архив: 2003.04.24;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.022 c
14-77084
Дмитрий К.К.
2003-04-07 06:11
2003.04.24
Именинники 6 апреля


14-77105
[NIKEL]
2003-04-05 11:02
2003.04.24
Кто что знает про фирму BSS Systems?


14-77151
Pitay
2003-04-06 21:28
2003.04.24
Эмитация нажатия кнопки


1-76935
Roller
2003-04-15 11:45
2003.04.24
Подмена функции DLL


14-77086
edicon
2003-04-06 19:26
2003.04.24
AsyncPro от TurboPower