![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как узнать 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)
никак... т.к. у процесса может быть несколько окон. Какое интересует? )