Форум: "Система";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.28;
Скачать: [xml.tar.bz2];




Вниз

GetWindow Vs CreateToolhelp32Snapshot - search, detect and destroy... 


Fellomena   (2001-12-20 12:37) [0]

Всем большой привет !!! Провела на днях парочку экспериментов, в связи с этим возникли вопросы:
когда я использовала ф-ию GetWindow для получения всех окон (процессов/модулей/threads ???) то получала один список.
Когда использовала CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); и CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, 0); а затем соответственно
Module32First(HModule, lpme); Module32Next(HModule, lpme);
Process32First(HProc, lppe); Process32Next(HProc, lppe);
то получала несколько другие результаты...
(правда я не пробовала threads таким способом смотреть).
Так вот, кто сможет объяснить мне концептуальную разницу при использовании GetWindow (это, как я поняла используется для обнаружения процессов) и при CreateToolhelp32Snapshot (получаем dump памяти на момент исполнения CreateToolhelp32Snapshot, а затем можем извлекать processes, threads, modules, fibers (?))
???



Digitman   (2001-12-20 14:57) [1]

Концеатуальная разница в том, что процесс, существуя сам по себе, может не иметь окна вообще, а может иметь их произвольное количество (столько, сколько он сам создаст в процессе своего выполнения).
GetWindow() возвращает именно хэндл окна, а не хэндл процесса, его создавшего. А получив хэндл окна, можно получить инф-цию о процессе , его создавшем.
Если нужно просто перечислить все процессы, их индивидуальный модульный состав и потоки процессов, лучше всего, конечно же, пользоваться Toolhelp-функциями (как это и реализовано в стандартных "Сведениях о системе"). А, имея информацию о некоем процессе, можно уже искать окна, открытые им. В т.ч. вызовами GetWindow()



DmitryA   (2001-12-20 18:55) [2]

Действительно, сказанное Digitman, верно!

По счастью у MS наименования функций очень близки с характером выполняемых действий. Если MS пишет "Window" - это окно, а не процесс, и наоборот...



Fellomena   (2001-12-21 15:51) [3]

да-да-да-да... примерно так я и предполагала, НО, когда я посмотрела на файлы, из которых были загруженны процессы, которые владеют окнами, handles которых я и получила с помощью GetWindow, то обнаружились странные вещи -
в списке были программы, которые, по крайней мере явных, окон не имеют... к примеру, файлы vxd - ???

2 Digitman: я не формалистка, но позволю себе заметить, что процесс не может иметь произвольное количество окон - это число, вообще говоря, ограничено 8)
ну это я уже придераюсь к словам =\

Спасибо за ответ.



Digitman   (2001-12-21 16:17) [4]

конечно - придираешься) ... число окон ограничено ресурсами ОС, разрядностью их счетчика и разрядностью хэндла)



Krutoy   (2001-12-26 11:30) [5]

Как работать с памятью процесса, типа Gamecheater-а?




Форум: "Система";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.28;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.034 c
1-90972           ivit61                2002-03-13 10:52  2002.03.28  
Поиск метода по адресу


6-91026           Ramid                 2002-01-16 13:37  2002.03.28  
Доспуп к свойтвам Internet Explorer (СОМ) при работе с SHTTP, а работа с СОМ при использовании потоков


1-90922           DRUG                  2002-03-12 04:13  2002.03.28  
Как изменить форму?


1-90849           baston                2002-03-16 19:12  2002.03.28  
Как создать подобную вкладку


7-91091           CS                    2001-12-19 09:29  2002.03.28  
LPT-порт