понедельник, 20 октября 2008 г.

Кусочки: Как, зная Handle окна программы, определить имя EXE

Как, зная Handle окна программы, определить имя EXE

// Для начала определимкакому процессу принадлежит окно:

 
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

Комментариев нет: