Cerrar una aplicación externa sabiendo el nombre de su ejecutable

5418 vistas

Será tan sencillo como hacer una llamada a la siguiente función



delphi
  1. function KillTask(FileName:String):integer;
  2. var
  3.   ContinueLoop: BOOL;
  4.   FSnapshotHandle: THandle;
  5.   FProcessEntry32: TProcessEntry32;
  6. const
  7.   PROCESS_TERMINATE=$0001;
  8. begin
  9.   FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
  10.   FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
  11.   ContinueLoop := Process32First(FSnapshotHandle,FProcessEntry32);
  12.   while integer(ContinueLoop)<>0 do
  13.   begin
  14.     if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = UpperCase(FileName))
  15.         or (UpperCase(FProcessEntry32.szExeFile) = UpperCase(FileName))) then
  16.       Result := Integer(TerminateProcess(OpenProcess(PROCESS_TERMINATE,BOOL(0),
  17.                           FProcessEntry32.th32ProcessID),0));
  18.     ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
  19.   end;
  20.   CloseHandle(FSnapshotHandle);
  21. end;



Un ejemplo de llamada serÃa



delphi
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. begin
  3.   KillTask('Notepad.exe');
  4. end;