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?