Главная страница
    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
4-77241
Walter
2003-02-27 13:11
2003.04.24
SetWindowsHookEx


3-76776
OneOfTheFew
2003-04-04 11:46
2003.04.24
Проблема с запросом (LocalSQL,Paradox,TQuery & parameters)


3-76770
off
2003-04-03 07:19
2003.04.24
Поле типа TTime в IB.


7-77192
dimkamai
2003-03-06 21:28
2003.04.24
Перехват переключения раскладки клавиатуры


14-77113
gek
2003-04-07 21:33
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский