Home » Tipps & Tricks » System » Prozesse » Ermitteln ob eine Exe-Datei läuft

Ermitteln ob eine Exe-Datei läuft

Mit folgendem Code kann geprüft werden, ob eine Exe-Datei läuft.Über Die TProcessEntry32-Struktur kann auch gleich ein Handle auf den Prozess ermittelt werden.Nähere Informationen im PSDK unter dem Stichwort ProcessEntry32.

uses TlHelp32;

function IsExeRunning(const AExeName: string): boolean;
var
  h: THandle;
  p: TProcessEntry32;
begin
  Result := False;

  p.dwSize := SizeOf(p);
  h := CreateToolHelp32Snapshot(TH32CS_SnapProcess, 0);
  try
    Process32First(h, p);
    repeat
      Result := AnsiUpperCase(AExeName) = AnsiUpperCase(p.szExeFile);
    until Result or (not Process32Next(h, p));
  finally
    CloseHandle(h);
  end;
end;

Beispielaufruf

procedure TForm1.Button1Click(Sender: TObject);
begin
if IsExeRunning('Notepad.exe') then
   ShowMessage('Notepad läuft')
else
   ShowMessage('Notepad läuft nicht');
end;

Es wird dabei nur überprüft, ob eine Anwendung mit dem gleichen Dateinamen läuft. Es spielt keine Rolle in welchem Verzeichnis sich die Anwendung befindet. Aus diesem Grund muss der Funktion auch nur der Dateiname der EXE-Datei übergeben werden.