Delphi-PRAXiS
Seite 1 von 2  1 2      

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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:59 Uhr.
Seite 1 von 2  1 2      

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