Wie kann ich die Programmdatei (*.exe) einer Anwendung über deren Fensterhandle ermittteln?
Hier ein Beispiel von Christian Kästner, das allerdings nicht unter Windows NT funktioniert:
uses TLHelp32, ShellApi;
var PID : DWord;
    aSnapshotHandle : THandle;
    ContinueLoop : BOOL;
    aProcessEntry32 : TProcessEntry32;
begin
  GetWindowThreadProcessID(FindWindow('Fenstertitel',nil), @PID);
  aSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  aProcessEntry32.dwSize := Sizeof(aProcessEntry32);
  // gehe alle Prozesse durch (m.H. der TLHelp32 - Unit)
  ContinueLoop := Process32First(aSnapshotHandle, aProcessEntry32);
  while integer(ContinueLoop)<>0 do begin
    // gesuchter Prozess (PID) in der Liste aller Prozesse gefunden?
    if aProcessEntry32.th32ProcessID = PID then
      FileList.Items.Add(aProcessEntry32.szExeFile);
    ContinueLoop := Process32Next(aSnapshotHandle, aProcessEntry32);
  end;
  CloseHandle(aSnapshotHandle);
end;
| Delphi 1 | Delphi 2 | Delphi 3 | Delphi 4 | 
| nicht getestet | Version nicht betroffen | getestet | 
siehe auch:
Wie kann aus meinem Programm heraus eine andere Anwendung schließen?
Wie bekomme ich Zugriff auf alle geöffneten Fenster?