![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как зная хэндл окна ;программы определить имя ее экзешника?
kofman © (2002-10-07 23:38:00)Как мне зная хэндл окна определить как называется exe-файл которому оно "принадлежит"? Я конечно криво сформулировал, но все таки. Заранее спасибо.
bytebutcher (2002-10-12 03:33:00) [1]Romanl
Я долго смеялся (просто кипятком писал) когда увидил строчки:
Var pProcID : ^DWORD;
begin
GetMem (pProcID, SizeOf (DWORD));
GetWindowThreadProcessId (WinHandle, pProcID);
end;
Во-первых - что указатель, что DWORD - занимают 4 байта.
Во-вторых - проще было бы написать:
Var PID : DWORD;
begin
GetWindowThreadProcessId (WinHandle, @PID);
end;
И спрашивается - нах.я извращаться???????????
Romanl (2002-10-09 12:23:00) [2]Рад, что смог помочь. Сам долго с этим мучался :)
vidiv (2002-10-09 06:28:00) [3]Romanl - пример -- дело! особенно я никогда бы не додумался:
Var pProcID : ^DWORD;
begin
GetMem (pProcID, SizeOf (DWORD));
GetWindowThreadProcessId (WinHandle, pProcID);
end;
Теперь нучил. СПАСИБО!
Rouse_ (2002-10-09 02:41:00) [4]GetWindowThreadProcessId ( WinHandle, pProcID);
Желаю успехов
kofman (2002-10-09 00:03:00) [5]>Romanl спасибо за ответ, только я правильно понял, что сначало надо получить pProcID, а потом передать его в GetExeNameByProcID ?
Romanl (2002-10-08 10:08:00) [6]Для начала определяешь какому процессу принадлежит окно:
Var pProcID : ^DWORD;
begin
GetMem (pProcID, SizeOf (DWORD));
GetWindowThreadProcessId (WinHandle, pProcID);
end;
а после этого используешь TProcessEntry32 примерно так:
function GetExeNameByProcID (ProcID : DWord) : String;
var
ContinueLoop : BOOL;
FSnapshotHandle : THandle;
FProcessEntry32 : TProcessEntry32;
begin
FSnapshotHandle := CreateToolhelp32Snapshot (TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
Result := "";
while (Integer (ContinueLoop) <> 0) and (Result="") do
begin
if FProcessEntry32.th32ProcessID = ProcID then
Result := FProcessEntry32.szExeFile;
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;
end;
Не забудь в uses добавить Tlhelp32