![]() |
Task Killen in Delphi?
Hallo,
Weiss jemand ne effektive möglichkeit auch hartnäckige Tasks zu beenden??? Die normalen Codes sind zu schwach um manche Tasks zu beenden habe schon eingie möglichkeiten durch war aber keine wirklich effektive dabei! Bin für jeden Tip Dankbar! |
Re: Task Killen in Delphi?
Liste doch mal die Möglichkeiten auf, die Du schon probiert hast ... dann könnten wir überlegen, was noch möglich wäre.
|
Re: Task Killen in Delphi?
Kein Problem also das erste ist ne function die eigentlich gar nicht funktioniert zumindest nicht unter XP hier der code:
Delphi-Quellcode:
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; CloseHandle(FSnapshotHandle); end;
Delphi-Quellcode:
So der zweite Code soll eigentlich unter XP funktionieren tut er aber nicht damit kann man nicht mal den IEXPLORER beenden ab und zu klappts dann wieder nicht ist allso alles nicht sehr zuverlässig!
procedure KillProcess(hWindowHandle: HWND);
var hprocessID: INTEGER; processHandle: THandle; DWResult: DWORD; begin SendMessageTimeout(hWindowHandle, WM_CLOSE, 0, 0, SMTO_ABORTIFHUNG or SMTO_NORMAL, 5000, DWResult); if isWindow(hWindowHandle) then begin GetWindowThreadProcessID(hWindowHandle, @hprocessID); if hprocessID <> 0 then begin processHandle := OpenProcess(PROCESS_TERMINATE or PROCESS_QUERY_INFORMATION, False, hprocessID); if processHandle <> 0 then begin TerminateProcess(processHandle, 0); CloseHandle(ProcessHandle); end; end; end; end; Kann man nicht irgendwie die Tasks direkt aus dem Speicher löschen oder überschreiben??? [edit=Luckie]Delphi-Tags. Mfg, Luckie[/edit] |
Re: Task Killen in Delphi?
In der Code-Lib findest du Code, wie man sich alle Prozesse auflistet und wie man einen beenden kann mit TerminateProcess.
|
Re: Task Killen in Delphi?
...also erstmal danke für deine Antwort habe ich schon getestet den code. Der funktioniert auch nicht immer zumindest nicht z.b bei kazaa oder emule usw dann kommt nähmlich immer die fehlermeldung "Systemfehler 6 Das Handle ist ungültig" Kennt wirklich keiner was womit man 100% den Prozess beenden kann???
|
Re: Task Killen in Delphi?
Also bei mir hat mein Code bisher immer funktioniert und mit Kazaa geht es auch problemlos. :roll:
|
Re: Task Killen in Delphi?
Hmmm,
Haste denn auch Win XP weil wodran soll es sonst liegen? Habe Win XP und haut nicht hin! Der sagt mir immer Das Handle ist ungültig und beednet den Prozess nicht! Das einzigste was er beendet ist Internet Explorer. ansonsten nix |
Re: Task Killen in Delphi?
Also ich hab WinXP SP1 und bei mir geht Luckie's Code aus der Code-Lib einwandfrei! :?
Edit: Hmm, mache Prozesse haben bei mir auch ein ungültiges Handle. :gruebel: |
Re: Task Killen in Delphi?
Ja genau das meine ich ja mit dem Handle fehler weiss denn keiner wodran das liegen kann??
Oder vielleicht noch ne andere möglichkeit wie das klappen könnte, muss doch irgend ne möglichkeit geben! :wall: |
Re: Task Killen in Delphi?
Kann es sein, dass der Prozess nicht in deinem Benutzerkontext läuft? Dann hast du auch kein Recht ihn zu beenden. Ist zum Beispiel bei Diensten so, die dir in der Prozessliste angezeigt werden.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz