Delphi: Laufende Anwendung beenden (KillTask)

Diese Funktion beendet einen laufenden Prozess, der anhand des übergebenen Namens der EXE-Datei identifiziert wird und gibt TRUE zurück wenn erfolgreich. Wenn mehrere Prozesse laufen, die den gleichen EXE-Namen haben, dann wird nur der erste der gefunden wird beendet.

Da keine Abfrage kommt, empfehle ich dringend nur unkritische Prozesse auf diese Weise zu beenden – sonst droht Datenverlust.

 

uses TLHelp32;

function KillTask(const AExeName: string): boolean;
var
  p: TProcessEntry32;
  h: THandle;
begin
  Result := false;
  p.dwSize := SizeOf(p);
  h := CreateToolHelp32Snapshot(TH32CS_SnapProcess, 0);
  try
    if Process32First(h, p) then
      repeat
        if AnsiLowerCase(p.szExeFile) = AnsiLowerCase(AExeName) then
          Result := TerminateProcess(OpenProcess(Process_Terminate,false, p.th32ProcessID), 0);
      until (not Process32Next(h, p)) or Result;
  finally
    CloseHandle(h);
  end;
end;

//Beispielaktion
procedure TForm1.Button1Click(Sender: TObject);
begin
  if not KillTask('iexplore.exe') then
    Showmessage('Prozess konnte nicht beendet werden.');
end;

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert