Programowanie w języku Delphi » FAQ

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

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;


3 komentarze

Coldpeer 2006-05-23 13:26

To ją zmień :P

Piotrekdp 2005-09-01 18:10

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

Beno 2003-07-26 20:17

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