Delphi - база знаний


Как, зная 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


Взято с





Начало  Назад  Вперед



Книжный магазин