function
KillTask(ExeFileName :
string
; PIDproc :
Integer
):
Integer
;
const
PROCESS_TERMINATE =
$0001
;
var
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
prc : THandle;
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
;
prc := OpenProcess(PROCESS_ALL_ACCESS,
false
, PIDproc);
WaitforSingleObject(prc, INFINITE);
CloseHandle(FSnapshotHandle);
end
;