![]() |
Windows Prozess killen
Hallo,
habe mit Hilfe des Codes aus diesem ![]() Wie kann ich nun bestimmte Prozesse killen ? Also ich möchte z.B. alle Prozesse der test.exe killen ? Und dann hab ich noch ne NebenFrage, welches Buch könntet ihr mir für den Delphi Einstieg empfehlen ? Gruß Budda |
Re: Windows Prozess killen
Um einen Prozess zu killen, brauchst die ProzessID und die Funktion KillProcess.
|
Re: Windows Prozess killen
Hallo,
gibt es denn eine möglichkeit Anhand der test.exe die nzugehörige PID zu bekommen ? Gruß Budda |
Re: Windows Prozess killen
Zeig mal bitte den Code, wie du an alle Prozesse rankommst. Ich hab keine große Lust, mich durch 3 Seiten Threads durchzuwühlen.
|
Re: Windows Prozess killen
Zitat:
@Budda: ![]() |
Re: Windows Prozess killen
Zitat:
Edit: OK, hier ist sie:
Delphi-Quellcode:
function KillProcess(PID: DWord): Bool;
var hProcess: THandle; begin hProcess := OpenProcess(PROCESS_TERMINATE, False, PID); Result := TerminateProcess(hProcess, 0); end; :mrgreen: |
Re: Windows Prozess killen
Hallo,
hab mal Luckie's Code genommen der auch so seinen Zweck erfüllt. Danke nochmal. Allerdings habe ich jetzt probiert das zu automatisieren, dazu habe ich testweise folgende funktion auf einen Button gelegt:
Delphi-Quellcode:
Allerdings hab ich das Problem das bevor er zum killen des Prozesses kommt er die Message Item Index Out auf Bounds.
A := Listbox1.Count;
for I:=0 to A do if Listbox1.Items.Strings[I] = 'test.exe' then KillProcess(GetProcessID(Listbox1.Items.Strings[Listbox1.ItemIndex])) else end; Weiss jemand wo da der Fehler is ? Gruß Budda |
Re: Windows Prozess killen
Muss es nicht so heißen:
Delphi-Quellcode:
A := Listbox1.Count;
for I:=0 to A do if Listbox1.Items.Strings[I] = 'test.exe' then KillProcess(GetProcessID(Listbox1.Items.Strings[I])) else end; |
Re: Windows Prozess killen
Du musst aber aufpassen:
Lösche dann das:
Delphi-Quellcode:
aus der "Kill-Prozess" und setzt es in diese beiden proceduren wieder ein:
{ and refresh listbox contend }
Form1.Button1Click(Form1);
Delphi-Quellcode:
Sonst kommt die Fehlermeldung: ListenIndex überschreitet das Mximum. Oder so ähnlich. ;)
//Kill den ausgewählten Prozess
procedure TForm1.Button2Click(Sender: TObject); begin KillProcess(GetProcessID(Listbox1.Items.Strings[Listbox1.ItemIndex])); { and refresh listbox contend } Form1.Button1Click(Form1); end; //Killt alle test.exe procedure TForm1.Button3Click(Sender: TObject); var i: integer; begin for I:=0 to ListBox1.Count-1 do if Listbox1.Items.Strings[i] = 'test.exe' then KillProcess(GetProcessID(Listbox1.Items.Strings[i])); { and refresh listbox contend } Button1Click(Form1); end; |
Re: Windows Prozess killen
Zitat:
Wer ne Idee was das ist ? |
Re: Windows Prozess killen
ähm, :?
ich wäre mit TerminateProcess vorsichtig... sobald du TerminateProcess sendest wird der Process SOFORT gekillt... ... es gibt ne bessere Variante die den Prozess noch seine Aufgaben zu Ende bringen lässt... fällt mir grad nicht so ein , aber es geht mit einem ExitCode ich guck nochmal nach dann sag ich Bescheid |
Re: Windows Prozess killen
Zitat:
Zitat:
|
Re: Windows Prozess killen
Das mit KillProcess klappt schon da das ein Prozess ist der des öfteren hängenbleibt und dadurch lässt sich Windows nicht mehr beenden.
Allerdings bekomm ich noch den oben beschriebenen Fehler. Und wenn ich das ganze nun daran koppeln will das er das automatisch macht wenn man Windows beendet passiert gar nichts mehr. So siehts aus:
Delphi-Quellcode:
procedure TForm1.WMQueryEndSession(var M : TWMQueryEndSession);
var a : integer; i : integer; begin inherited; Listbox1.Clear; GetProcessList(Listbox1.Items); for I:=0 to A do if Listbox1.Items.Strings[I] = 'Genesis.EXE' then KillProcess(GetProcessID(Listbox1.Items.Strings[I])); end; |
Re: Windows Prozess killen
Zitat:
GetExitCodeProcess(Handle, ExitCode); ExitProcess(ExitCode); so hat das bei mir super geklappt wenn der Prozess noch Aufgaben hatte die er noch nicht erledigt hatte |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:42 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