Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Windows Prozess killen (https://www.delphipraxis.net/8378-windows-prozess-killen.html)

Budda 3. Sep 2003 13:17


Windows Prozess killen
 
Hallo,

habe mit Hilfe des Codes aus diesem Thread eine Liste aller laufenden Prozesse bzw. die Dateinamen like test.exe.

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

Chewie 3. Sep 2003 13:23

Re: Windows Prozess killen
 
Um einen Prozess zu killen, brauchst die ProzessID und die Funktion KillProcess.

Budda 3. Sep 2003 13:40

Re: Windows Prozess killen
 
Hallo,

gibt es denn eine möglichkeit Anhand der test.exe die nzugehörige PID zu bekommen ?

Gruß
Budda

Chewie 3. Sep 2003 14:03

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.

Luckie 3. Sep 2003 14:06

Re: Windows Prozess killen
 
Zitat:

Zitat von Chewie
Um einen Prozess zu killen, brauchst die ProzessID und die Funktion KillProcess.

Funktionn KillProcesses? :shock: Wo kommt die denn her?

@Budda: http://www.delphipraxis.net/internal...ect.php?t=2275

Chewie 3. Sep 2003 14:12

Re: Windows Prozess killen
 
Zitat:

Zitat von Luckie
Zitat:

Zitat von Chewie
Um einen Prozess zu killen, brauchst die ProzessID und die Funktion KillProcess.

Funktionn KillProcesses? :shock: Wo kommt die denn her?

:duck: Mist, ich hab gerade an Linux gedacht (kill PID). :oops:

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:

Budda 3. Sep 2003 15:39

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:
  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;
Allerdings hab ich das Problem das bevor er zum killen des Prozesses kommt er die Message Item Index Out auf Bounds.

Weiss jemand wo da der Fehler is ?

Gruß
Budda

Matze 3. Sep 2003 15:44

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;

Matze 3. Sep 2003 15:50

Re: Windows Prozess killen
 
Du musst aber aufpassen:

Lösche dann das:
Delphi-Quellcode:
{ and refresh listbox contend }
Form1.Button1Click(Form1);
aus der "Kill-Prozess" und setzt es in diese beiden proceduren wieder ein:

Delphi-Quellcode:
//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;
Sonst kommt die Fehlermeldung: ListenIndex überschreitet das Mximum. Oder so ähnlich. ;)

Budda 4. Sep 2003 07:24

Re: Windows Prozess killen
 
Zitat:

Zitat von Matze
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;

Ah jau, das hatte ich übersehen, allerdings habe ich das Problem das er den prozess zwar automatisch beendet allerdings kommt nach dem beenden der Fehler "List Index out of Bounds".

Wer ne Idee was das ist ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:06 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz