| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > Найти хэндлы всех окон приложения |
| Автор: Bog d`An 29.11.2005, 11:44 | ||
вобще-то необходимо хэндлы всех окон приложения... как их теперь добыть? что-нибудь вроде GetWindowThreadProcessID наоборот... |
| Автор: _hunter 29.11.2005, 12:43 |
| http://forum.vingrad.ru/index.php?showtopic=51149 |
| Автор: Bog d`An 29.11.2005, 14:03 | ||
| Так что перебором всех быстрее получается? зы: или я чегот не понял но для моего случая есть индинтификатор процесса hProcess: THandle; или PID но не хэндл родительского окна... типа его искать и надо... той токо так подходит: Step
? |
| Автор: Bog d`An 29.11.2005, 16:49 |
| а если EnumThreadWindows, а затем EnumChildWindows? _hunter, ты это тестил? EnumThreadWindows сам по себе медленный или вместе с двумя предидущими(CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0) и Thread32First())? |
| Автор: _hunter 29.11.2005, 18:30 |
| я ж все написал... медленнее сам метод ( + как ты собираешся использовать EnumThreadWindows без снимка? ) |
| Автор: Bog d`An 7.12.2005, 16:05 | ||||
| Сел разбиратся... _hunter, извини что достаю, не мог бы ты привести пример использования ф-и EnumThreadWindows? С синтаксисом а-ля делфя или я что-то пропустил?
(я нашел токо Handling Logoff Events от MSDN, но не всё понял
|
| Автор: Girder 7.12.2005, 16:58 | ||
PS: А вообще... если воспользуешся поиском... то увидеш... что енто не однократно обсуждалось! |
| Автор: Bog d`An 8.12.2005, 07:02 | ||
Что бы это было? з.ы.: хороший пример использования ф-и EnumThreadWindows |
| Автор: Bog d`An 8.12.2005, 07:14 | ||||
Типа Эврика! CALLBACK -> stdcall;
з.ы.:
Всё равно не вьехал... какого снимка? не вижу снимка |
| Автор: Girder 8.12.2005, 10:38 | ||||
|
| Автор: Bog d`An 16.12.2005, 04:15 | ||||
не, тут было дело принципа - разобратся с конкретной функцией... и фразой про снимок... Кстати так и не понял зачем было снимок приплетать... _hunter, ау! и вовсе не сложно и вообще если к GetWindow ещё и GetWindowThreadProcessId приплести - то точно проще... зы:
На входе - дескриптор окна с которого начать поиск - ты наверное это имел в виду (судя по коду) |
| Автор: Romikgy 16.12.2005, 10:03 | ||
Список процессов через снимок
|
| Автор: _hunter 16.12.2005, 12:08 | ||
а я так и не понял что ты не понял... ты спросил какой из методов бысрее ( один из них делает снимок ). я ответил... |
| Автор: Bog d`An 19.12.2005, 04:12 | ||||
зы: ок, токо там непонятки с ответом... итак я хотел спросить вот что: я запускаю чужое приложение с помощью Create Process, таким образом имею его ProcessInfo 1 способ: беру ProcessInfo.dwThreadId и подставляю в EnumThreadWindows первым параметром; 2 способ: перебрать все окна (опять таки есть разные решения, я так понял из предидущих постов
Все верно? или я не туда мыслю, ведь здесь нет снимков вот и я сомневался что второй способ быстрее первого... |
| Автор: _hunter 19.12.2005, 12:28 |
| ты забыл о том, что приложение может иметь несколько потоков, а ты ищеш окна только одного потока. для того, чтобы найти все ротоки процесса и нужен снимок |
| Автор: Bog d`An 20.12.2005, 16:19 |
| Ах да, действительно, был такой пост... Правда у нужного мне всего один поток... |