Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Task Killen in Delphi? (https://www.delphipraxis.net/18352-task-killen-delphi.html)

delpher 17. Mär 2004 09:37


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!

Evian 17. Mär 2004 09:52

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.

delpher 17. Mär 2004 09:58

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:
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;
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!
Kann man nicht irgendwie die Tasks direkt aus dem Speicher löschen oder überschreiben???

[edit=Luckie]Delphi-Tags. Mfg, Luckie[/edit]

Luckie 17. Mär 2004 11:43

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.

delpher 17. Mär 2004 12:04

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???

Luckie 17. Mär 2004 12:08

Re: Task Killen in Delphi?
 
Also bei mir hat mein Code bisher immer funktioniert und mit Kazaa geht es auch problemlos. :roll:

delpher 17. Mär 2004 12:12

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

Matze 17. Mär 2004 13:04

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:

delpher 17. Mär 2004 15:38

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:

Luckie 17. Mär 2004 18:17

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.

delpher 17. Mär 2004 20:31

Re: Task Killen in Delphi?
 
Hmmm, Das habe ich mir auch shcon überlegt :oops: also die Prozesse die unter dem namen "SYSTEM" laufen kann ich nicht beenden alle anderen eigentlich schon die unter meinem Benutzernamen laufen. Aber es müsste doch ne möglichkeit geben diese "SYSTEM" Prozesse auch zu beenden oder sehe ich das falsch? :gruebel:

Luckie 18. Mär 2004 11:00

Re: Task Killen in Delphi?
 
LOL. Der System-Dienst ist vom System. Und was meinst du wie gut du dann noch mit Windows arbeiten kann, wenn du ein Dienst mit dem Namen System beendest? Den kannst du nur beenden, wenn du Windows runterfährst. :roll:

Matze 19. Mär 2004 19:25

Re: Task Killen in Delphi?
 
Es gibt aber Anwendungen/Dienste, die unter dem Benutzernamen SYSTEM laufen und die man über den Taskmanager beenden kann, mit deinem Code jedoch nicht. :?

NicoDE 19. Mär 2004 19:32

Re: Task Killen in Delphi?
 
Schon probiert 'SeDebugPrivilege' vor dem Öffnen des Prozesses zu aktivieren?

Matze 19. Mär 2004 19:39

Re: Task Killen in Delphi?
 
:twisted: Ich durfte rebooten...

Ich hab winlogon.exe beendet. :roll:


:thumb: Danke, das funktioniert einwandfrei!

NicoDE 19. Mär 2004 19:43

Re: Task Killen in Delphi?
 
Zitat:

Zitat von Matze
Ich hab winlogon.exe beendet.

Selbst Schuld wenn Du mit einem Admin-Account angemeldet bist und Dich nicht wie einer verhälst ;)

Matze 19. Mär 2004 19:46

Re: Task Killen in Delphi?
 
Ich wusste ja nicht, für was das ist, logon ist ja vorbei, WIndows öäuft ja. :mrgreen:

Luckie 19. Mär 2004 19:47

Re: Task Killen in Delphi?
 
Tj auch bei Windows gilt, dass was im richtigen leben gilt: Erst informieren, dann (ab)schießen. :mrgreen:

Matze 19. Mär 2004 19:49

Re: Task Killen in Delphi?
 
Nochmal OT:

Probieren geht über studieren, naja, bei Win wohl keine gute Idee. :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:45 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