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;
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