Ich habe jetzt die Funktion "entzerrt" - folgendermaßen:
Delphi-Quellcode:
function KillTask(const AExeName: string): boolean;
var
p: TProcessEntry32;
h: THandle;
Process: Cardinal;
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
begin
Process := OpenProcess(Process_Terminate, false, p.th32ProcessID);
Result := TerminateProcess(Process, 0);
end;
until (not Process32Next(h, p)) or Result;
finally
CloseHandle(h);
end;
end;
Ich habe p dann mal überwacht, als AExeName 'WoW.exe' war...
Dabei ist das Programm garnicht bis zu OpenProcess gekommen, da in diese If-Anweisung garnicht gesprungen wurde:
Delphi-Quellcode:
if AnsiLowerCase(p.szExeFile) = AnsiLowerCase(AExeName) then
begin
Process := OpenProcess(Process_Terminate, false, p.th32ProcessID);
Result := TerminateProcess(Process, 0);
end;
Dann hab ich mir mal p angeschaut... p wurde mit
(296, 0, 0, 0, 0, 1, 0, 0, 0, ('[', 'S', 'y', 's', 't', 'e', 'm', ' ', 'P', 'r', 'o', 'c', 'e', 's', 's', ']', #0, 'û', 'ý', '', #24, #0, #0, #0, 'Ð', #7, #0, #0, 'X', 'ú', #18, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, '<', #0, '>', #0, #0, 'ü', 'ý', '', 't', #7, #0, #0, '„', 'ú', #18, #0, 'Ê', '/', '', '|', #3, #0, #31, #0, #0, #0, #0, #0, #0, 'ü', 'ý', '', 'Ø', 'ú', #18, #0, #30, #0, #31, #0, 'à', 'ú', #18, #0, 'œ', 'ú', #18, #0, '’', 'Õ', '‘', '|', '»', '›', '€', '|', 't', #7, #0, #0, #12, 'ý', #18, #0, 'Ù', #21, 'j', 't', 't', #7, #0, #0, ' ', '.', #21, #0, '¥', 'ö', 'k', 't', '|', #6, #16, #0, #2, #0, #0, #0, '£', 'À', #0, #0, 'x', 'â', #20, #0, 'x', 'â', #20, #0, #2, #0, #0, #0, '(', #0, 'ì', #0, #0, #0, #0, #0, 'x', 'â', #20, #0, 'È', 'q', #20, #0, '(', 'á', #20, #0, 'Ð', #13, #21, #0, #0, #0, #0, #0, 'à', 'ú', #18, #0, 'M', 'S', 'C', 'T', 'F', '.', 'S', 'e', 'n', 'd', 'R', 'e', 'c', 'e', 'i', 'v', 'e', '.', 'E', 'v', 'e', 'n', 't', '.', 'I', 'A', 'O', '.', 'I', 'C', #0, #0, #1, #0, #0, #0, 'Ð', 'ú', #18, #0, 'p', 'ý', #18, #0, 'p', 'ý', #18, #0, '”', #4, 'Ô', 'w', #8, 'ˆ', 'Ñ', 'w', 'ÿ', 'ÿ', 'ÿ', 'ÿ', #16, #0, #0, #0, '°', '3', 'ˆ', '|', 'l', 'û', #18, #0, #0, #0, #0, #0, 'Æ', 'Z', 'A', #0))
angezeigt...
Dabei ist p.szExeFile dann gleich
('[', 'S', 'y', 's', 't', 'e', 'm', ' ', 'P', 'r', 'o', 'c', 'e', 's', 's', ']', #0, 'û', 'ý', '', #24, #0, #0, #0, 'Ð', #7, #0, #0, 'X', 'ú', #18, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, '<', #0, '>', #0, #0, 'ü', 'ý', '', 't', #7, #0, #0, '„', 'ú', #18, #0, 'Ê', '/', '', '|', #3, #0, #31, #0, #0, #0, #0, #0, #0, 'ü', 'ý', '', 'Ø', 'ú', #18, #0, #30, #0, #31, #0, 'à', 'ú', #18, #0, 'œ', 'ú', #18, #0, '’', 'Õ', '‘', '|', '»', '›', '€', '|', 't', #7, #0, #0, #12, 'ý', #18, #0, 'Ù', #21, 'j', 't', 't', #7, #0, #0, ' ', '.', #21, #0, '¥', 'ö', 'k', 't', '|', #6, #16, #0, #2, #0, #0, #0, '£', 'À', #0, #0, 'x', 'â', #20, #0, 'x', 'â', #20, #0, #2, #0, #0, #0, '(', #0, 'ì', #0, #0, #0, #0, #0, 'x', 'â', #20, #0, 'È', 'q', #20, #0, '(', 'á', #20, #0, 'Ð', #13, #21, #0, #0, #0, #0, #0, 'à', 'ú', #18, #0, 'M', 'S', 'C', 'T', 'F', '.', 'S', 'e', 'n', 'd', 'R', 'e', 'c', 'e', 'i', 'v', 'e', '.', 'E', 'v', 'e', 'n', 't', '.', 'I', 'A', 'O', '.', 'I', 'C', #0, #0, #1, #0, #0, #0, 'Ð', 'ú', #18, #0, 'p', 'ý', #18, #0, 'p', 'ý', #18, #0, '”', #4, 'Ô', 'w', #8, 'ˆ', 'Ñ', 'w', 'ÿ', 'ÿ', 'ÿ', 'ÿ', #16, #0, #0, #0, '°', '3', 'ˆ', '|', 'l', 'û', #18, #0, #0, #0, #0, #0, 'Æ', 'Z', 'A', #0)
und natürlich wird in die Anweisungen nicht gesprungen... Frage ist nun natürlich, warum es beim Firefox zB funktioniert, aber bei WoW.exe nicht? p.szExeFile war beim firefox ja auch gleich dem exe-Namen...
Ich bin sehr angewiesen auf eine Lösung; es wäre nett wenn jemand eine findet, ich bin am Ende mit meinem Latein...