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?