Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как узнать Handle окна зная handle процесса [D6, D7, WinXP]


Polas ©   (2006-05-08 21:54:00) 

собственно сабж %)


Polas   (2006-05-08 23:43:00) [1]

Process - хендл процеса чье окно надо найти!


Eraser   (2006-05-08 23:09:00) [2]


> Polas   (08.05.06 22:35) [5]


> ProcessHandle := OpenProcess(PROCESS_TERMINATE, FALSE, ProcessId);

вот это лишнее. Нужно сравнивать идентификатор, а не дескриптор, хотя всё зависит от того, что значит переменная Process.


Polas   (2006-05-08 22:35:00) [3]

хотя работает, дело просто в ProcessId, я эту переменную обьявил раньше. и она использовалась!!
Eraser, спосибо за помощь! %)


Polas   (2006-05-08 22:22:00) [4]

да но код не работает


Var
   Wd : HWnd;
   ProcessID: Integer;
   ProcessHandle : THandle;
begin
   Wd:=FindWindow(0,0);
   While (wd<>0) do
   Begin
   GetWindowThreadProcessID(Wd, @ProcessID);
   ProcessHandle := OpenProcess(PROCESS_TERMINATE, FALSE, ProcessId);
   if ProcessHandle=Process then begin
  // blablabla
   end;
   Wd:=GetNextWindow(Wd,GW_HWNDNEXT);
   End;


где Process - хендл процеса чье окно надо найте!


Eraser   (2006-05-08 22:09:00) [5]


> Polas   (08.05.06 22:02) [2]

Если единственное - перечислить все окна в системе, и в этом списке найти то единственное, GetWindowThreadProcessId которого, возвращает ID нужного процесса.


Polas   (2006-05-08 22:02:00) [6]

главное (единственное)


Eraser   (2006-05-08 22:00:00) [7]


> Polas   (08.05.06 21:54)

никак... т.к. у процесса может быть несколько окон. Какое интересует? )


Наверх

Титульная страница Поиск, карта сайта Написать письмо