A widzisz jednak tutaj to było
Zaglądasz tu a nie czytasz innych o co pytają.
Zbieraj ciekawe posty na przyszłość ;) wtedy wyciągniesz ze swoich
zakamarków i będzie jak znalazł ;)
Uses TlHelp32,
//Zabicie wybranego
//podawać nazwę programu z rozszerzeniem ale bez pełnej ścieżki dostępu
FUNCTION KillTask(ExeFileName: String): Integer;
const
PROCESS_TERMINATE = $0001;
var
ContinueLoop :BOOL;
FSnapshotHandle :THandle;
FProcessEntry32 :TProcessEntry32;
Begin
Result:= 0;
FSnapshotHandle:= CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize:= Sizeof(FProcessEntry32);
ContinueLoop:= Process32First(FSnapshotHandle, FProcessEntry32);
while Integer(ContinueLoop) <> 0 do
begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = UpperCase(ExeFileName))
or (UpperCase(FProcessEntry32.szExeFile) = UpperCase(ExeFileName))) then
Result:= Integer(TerminateProcess(OpenProcess(
PROCESS_TERMINATE, BOOL(0),
FProcessEntry32.th32ProcessID), 0));
ContinueLoop:= Process32Next(FSnapshotHandle, FProcessEntry32);
end;
End;
//lub z podaniem pełnej ścieżki...
procedure Tform1.zabij(jaki:string);
var
PHandle, FHandle: THandle;
Process:TProcessEntry32;
Done, Next: Boolean;
begin
FHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
Process.dwSize := Sizeof(Process);
Next := Process32First(FHandle,Process);
while Next do
begin
if AnsiLowerCase(Process.szExeFile) = AnsiLowerCase(jaki) then
begin
PHandle:=OpenProcess(PROCESS_TERMINATE, False,
Process.th32ProcessID);
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;