Okay ich hab das Problem gelöst, indem ich eure "KillTask" Funktion etwas umgeschrieben habe:
Namlich von dem Code:
Delphi-Quellcode:
function KillTask(const AExeName: string): boolean;
var
p: TProcessEntry32;
h: THandle;
begin
Result := false;
p.dwSize := SizeOf(p);
h := CreateToolHelp32Snapshot(TH32CS_SnapProcess, 0);
try
if Process32First(h, p) then
repeat
if AnsiLowerCase(p.szExeFile) = AnsiLowerCase(AExeName) then
Result := TerminateProcess(OpenProcess(Process_Terminate,
false,
p.th32ProcessID),
0);
until (not Process32Next(h, p)) or Result;
finally
CloseHandle(h);
end;
end;
In "KillChildProcesses":
Delphi-Quellcode:
function KillChildProcesses(ProcessID:Cardinal): boolean;
var
p: TProcessEntry32;
h: THandle;
begin
Result := false;
p.dwSize := SizeOf(p);
h := CreateToolHelp32Snapshot(TH32CS_SnapProcess, 0);
try
if Process32First(h, p) then
repeat
if p.th32ParentProcessID=ProcessID then
begin
KillChildProcesses(p.th32ProcessID);
Result := TerminateProcess(OpenProcess(Process_Terminate,false,p.th32ProcessID),0);
end;
until (not Process32Next(h, p));
finally
CloseHandle(h);
end;
end;
Diese Funktion killt alle Prozesse, die jemand von der eigenen Anwendung aus gestartet wurden, wenn man sie so aufruft:
killchildprocesses(GetCurrentProcessId);
Grüße, euer alleinherrscher