Jak zamknąć inną aplikację znając jej ścieżkę

Adam Boduch

Jeżeli znasz ścieżkę uruchomionego programu to możesz zamknąć ją. Jak? Pokazuje to poniższy kod. Aha, do listy modułów uses musisz dodać słowo "TLHelp32".

var
  PHandle, FHandle: THandle;
  Process:TProcessEntry32;
  Done, Next: Boolean;
  EXE : String; // ścieżka programu
begin
  EXE := ExtractFileName('C:\Program Files\GIMP\bin\gimp-2.2.exe');
  FHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
  Process.dwSize := Sizeof(Process);
  Next := Process32First(FHandle,Process);
  while Next do
  begin{ jesli sciezka dostepu sie zgadza }
    if AnsiLowerCase(Process.szExeFile) = AnsiLowerCase(EXE) then
    begin
     PHandle:=OpenProcess(PROCESS_TERMINATE, False, 
     Process.th32ProcessID);
     { to probujemy zabic aplikacje }
     Done := TerminateProcess(PHandle,0);
     if not Done then
       MessageBox(Handle, 'Błąd', 'Błąd', MB_OK);
     end;
    Next := Process32Next(FHandle,Process);
   end;
   CloseHandle(FHandle);
end;
FAQ

3 komentarzy

To ją zmień :P

kolejny błąd nazwa zmiennej powinna być inna niż Next
delphi 6 zgłasza błąd bo Next to nazwa procedury w forms.pas

znalazlem blad:

jako EXE nie podajesz sciezki do pliku tylko jego nazwe, ew. EXE := ExtractFileName('C:\Windows\Pulpit\prog.exe');

inaczej progcedura nic nie zamknie i nawet cie o tym nie poinformuje