Форум: "WinAPI";
Текущий архив: 2002.11.25;
Скачать: [xml.tar.bz2];
ВнизКак зная хэндл окна программы определить имя ее экзешника? Найти похожие ветки
← →
kofman (2002-10-07 23:38) [0]Как мне зная хэндл окна определить как называется exe-файл которому оно "принадлежит"? Я конечно криво сформулировал, но все таки. Заранее спасибо.
← →
Romanl (2002-10-08 10:08) [1]Для начала определяешь какому процессу принадлежит окно:
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
← →
kofman (2002-10-09 00:03) [2]>Romanl спасибо за ответ, только я правильно понял, что сначало надо получить pProcID, а потом передать его в GetExeNameByProcID ?
← →
Rouse_ (2002-10-09 02:41) [3]GetWindowThreadProcessId ( WinHandle, pProcID);
Желаю успехов
← →
vidiv (2002-10-09 06:28) [4]Romanl - пример -- дело! особенно я никогда бы не додумался:
Var pProcID : ^DWORD;
begin
GetMem (pProcID, SizeOf (DWORD));
GetWindowThreadProcessId (WinHandle, pProcID);
end;
Теперь нучил. СПАСИБО!
← →
Romanl (2002-10-09 12:23) [5]Рад, что смог помочь. Сам долго с этим мучался :)
← →
bytebutcher (2002-10-12 03:33) [6]Romanl
Я долго смеялся (просто кипятком писал) когда увидил строчки:
Var pProcID : ^DWORD;
begin
GetMem (pProcID, SizeOf (DWORD));
GetWindowThreadProcessId (WinHandle, pProcID);
end;
Во-первых - что указатель, что DWORD - занимают 4 байта.
Во-вторых - проще было бы написать:
Var PID : DWORD;
begin
GetWindowThreadProcessId (WinHandle, @PID);
end;
И спрашивается - нах.я извращаться???????????
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.11.25;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c