Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.04.24;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2003.04.24;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.007 c
3-76787
Iii
2003-04-04 18:37
2003.04.24
Восстановление удаленной записи


3-76758
NetKnight
2003-04-08 00:41
2003.04.24
Перехват сообщения DataSource changed


11-76866
Alexei Dragoner
2002-07-17 13:20
2003.04.24
TApplication


1-76932
Alik
2003-04-14 15:17
2003.04.24
Построение графика функции через canvas


1-77003
Spartak
2003-04-14 10:02
2003.04.24
как из строки с путём к файлу получить расширение файла ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский