# Process beenden ...aber wie ?



## Johnny919 (18. Jul 2010)

hab mal ne frage und zwar wie und womit ist es mir möglich einenen ausgewählten laufenden process per drücken einer schaltfläche zu beenden ?

ein beispiel oder tut währe nicht schlecht ....
danke schon mal im vorraus !!


----------



## Der Müde Joe (18. Jul 2010)

Mit dem TaskManager.

Mit Java dürfte das nicht gehen. (Mal abgesehen von solchem Shell Lösungen mit 'kill -9 pid' oder solchen Würg)

EDIT:
evnetuell über die OS Libs und JNI, also C/++


----------



## Johnny919 (18. Jul 2010)

wie meinst du das mit dem taskmanager ?
ich glaube bischen falsch verstanden ich wollte das schon in meinen programm machen 
wenn das wirklich nicht mit java geht .... wie den dann ??


----------



## Der Müde Joe (18. Jul 2010)

bei unix:
hmmm?  sigsend(-9,pid) oder so in C
unter win (goolge):
Win32:rocess - Create and manipulate processes.


----------



## Illuvatar (18. Jul 2010)

Vielleicht wäre ja die Methode Process#destroy etwas für dich? Natürlich nur, wenn du den Prozess selbst startest.


----------



## Johnny919 (18. Jul 2010)

hmmm ich wollte das schon unter Windows machen ....
und zu dem distroy() ..... leider starte ich den process nicht selber .....
mal so ne zwischen frage wie sieht das denn mit der kill.exe aus wie benutze ich die hab nur gefunden das ich das damit machen kann dazu braucht ich nur die PID die ich habe ....
aber wie genau ich die benutze kann ich nicht ausfinig machen 
hab ihr vllt ne ahnung ??


----------



## tuxedo (18. Jul 2010)

Let me google that for you


----------



## Johnny919 (18. Jul 2010)

echt nett das du mir das googelst aber das habe ich scon selber geschaft deswegen frage ich ja auch weil ich nicht weis wie ich das machen soll und kein beispiel finde ....
und dann nicht weis wie ich das einbetten soll !!!
jemand der helfen will ?


----------



## hemeroc (18. Jul 2010)

Hmm was genau verstehst du denn nicht?
Der erste google hit ist doch genau das was du suchst da wird auch beschrieben wie man taskkill.exe aufrufen muss.
LG hemeroc

Edit: Wie man ein Programm aus java heraus startet ist hier beschrieben.


----------



## Johnny919 (18. Jul 2010)

danke für die mühe aber iwie bin ich blind 
ich finde nie wie ich die taskkill.exe zu bedienen habe da steht nur das die processe bendent und dafür die PID benötigt wird ...
hatte abber sowas erhoft wie ich das den in mein Programm einbinden kann weil das ja warscheinlich über die console gehen muss oder ??
wenn ja wie öffne ich wie und wie schreibe ich in den was rein aleso über das Programm ??
hast vllt was anderes gefunden als ich magst mal schicken ??
Danke und sorry das ich so anstrengend bin


----------



## hemeroc (18. Jul 2010)

also so verwendest du taskkill.exe

```
TASKKILL [/S System [/U Benutzername [/P [Kennwort]]]]
         { [/FI Filter] [/PID Prozesskennung | /IM Abbildname] } [/F] [/T]

Beschreibung:
    Dieses Befehlszeilenprogramm dient zum Beenden von einem oder
    mehrere Prozesse.
    Prozesse können über die Prozesskennung oder den Abbildnamen beendet
    werden.

Parameterliste:
    /S   System              Remotesystem für die Verbindungsherstellung.

    /U   [Domäne\]Benutzer   Bestimmt den Benutzerkontext, unter dem
                             der Befehl ausgeführt wird.

    /P   [Kennwort]          Bestimmt das Kennwort für den Benutzerkontext.
                             Auslassung fordert zur Kennworteingabe auf.

    /F                       Erzwingt das Beenden des Prozesses.


    /FI   Filter             Zeigt einen Satz von Tasks an, der mit vom
                             Filter festgelegten Kriterien übereinstimmt.

    /PID  Prozesskennung     Bestimmt die Prozesskennung des Prozesses,
                             der beendet werden muss.

    /IM   Abbildname         Bestimmt den Abbildnamen des Prozesses,
                             der beendet werden soll. Durch "*"
                             werden alle Abbildnamen verwendet.

    /T                       Strukturabbruch: Beendet den angegebenen
                             Prozess und dessen untergeordnete Prozesse.

    /?                       Zeigt diese Hilfemeldung an.

Filter:
    Filtername    Gültige Operatoren        Gültige Werte
    -----------   ------------------        -------------
    STATUS        eq, ne                    RUNNING | NOT RESPONDING
    IMAGENAME     eq, ne                    Beliebige gültige Zeichenfolge.
    PID           eq, ne, gt, lt, ge, le    Prozesskennungswert
    SESSION       eq, ne, gt, lt, ge, le    Sitzungsnummer
    CPUTIME       eq, ne, gt, lt, ge, le    CPU-Zeit im Format:
                                            hh:mm:ss.
                                            hh - Stunden,
                                            mm - Minuten, ss - Sekunden
    MEMUSAGE      eq, ne, gt, lt, ge, le    Speicherverwendung (KB)
    USERNAME      eq, ne                    Benutzername im Format:
                                            [Domäne]\Benutzername
    MODULES       eq, ne                    DLL-Name
    SERVICES      eq, ne                    Dienstname
    WINDOWTITLE   eq, ne                    Fenstertitel

HINWEIS: Der Platzhalter "*" für die Option /IM kann nur mit Filtern verwendet
         werden.

HINWEIS: Das Beenden von Remoteprozessen wird immer erzwungen,
         unabhängig davon, ob die Option /F angegeben wird.

Beispiele:
    TASKKILL /S System /F /IM notepad.exe /T
    TASKKILL /PID 1230 /PID 1241 /PID 1253 /T
    TASKKILL /F /IM notepad.exe /IM mspaint.exe
    TASKKILL /F /FI "PID ge 1000" /FI "WINDOWTITLE ne unbenan*"
    TASKLIST /F /FI "USERNAME ne NT-AUTORITÄT\SYSTEM" /IM notepad.exe
    TASKKILL /S System /U Domäne\Benutzername /FI "USERNAME ne NT*" /IM *
    TASKKILL /S System /U Benutzername /P Kennwort /FI "IMAGENAME eq note*"
```

und unter diesem Link => Process (Java 2 Platform SE v1.4.2)
findest du wie du das Programm aus deinem Java Programm starten kannst.
Das hat überhaupt nichts damit zu tun ob es sich um eine Konsolenanwendung handelt oder nicht.


----------



## Johnny919 (19. Jul 2010)

hmmm darf ich mich gnaz doof stellen ?
wenn ich das programm zum verwenden der kill.exe benutzen will muss ich die als was abspeichern (also mit was für einen safix ? das ja kein java also .......
und iwie hilf mir das was du mir geschickt hast mit wie ich das jetzt in meinen java program benutze recht wenig weil ich nicht verstehe wie ich die jetzt benutze ?!?! tut mir leid )
könntest du vllt ein beispiel posten ? bitte 
und noch ne unwichtige frage in was ist das denn geschrieben in C ??
Großes danke


----------



## Johnny919 (19. Jul 2010)

das ist garkein programm das ist das was dir die komandozeile ausspuckt  ohhh man jetzt versteh ich ja garnichts mehr

was ich ja eigentlich nur machen will ist 
TASKKILL /PID 5560 oder so in die komandozeile eingeben aber wie ??


----------



## Johnny919 (19. Jul 2010)

ich hab jetzt gefunden wie ich das mit der komandozeile mache und zwar so 

```
try {
	    String cmd = "cmd /c start TASKKILL /PID 5560";
	    Process ls_proc = Runtime.getRuntime().exec(cmd);
		} catch (IOException e) {
		    e.printStackTrace();
		}
```
aber ich glaube das ist so eine suboptimale lösung geht das auch iwie das ich das ohne cmd mache also iwie direckt mache ??


----------



## java66 (19. Jul 2010)

also ich würde den kill befehl in eine seperate .bat oder .sh schreiben und diese dann ausführen um auf fehler reagieren zu können und änderungen nicht im quellcode zu tätigen
die .bat kannst du dann wie gewohnt ausführen.

wenn du direkt in die Eingabe schreiben willst würde ich ein vbs script schreiben welches du dann ausführst dort kannst du die cmd ausführen und befehle per send reinschreiben.

...
Set objShell = CreateObject("WScript.Shell")
 objShell.run "c:\......cmd.exe"
 ...
 objShell.SendKeys "dir"

sowas in der art


----------



## Johnny919 (19. Jul 2010)

hmmmm meiner meinung viel zu umspändlich wozu das denn in einen extra datei auslagern ??
wollte eigentlich nur ne möglichkeit wissen wie ich direckt auf die taskkill.exe drauf zugreifen kann und ihr halt die gewünschte ausgewählte PID geben kann ohne cmd weil das fenster stört und ist warscheinlich auch unnötig !!
ist das möglich und wenn ja wie ??


----------



## tuxedo (19. Jul 2010)

Johnny919 hat gesagt.:


> wollte eigentlich nur ne möglichkeit wissen wie ich direckt auf die taskkill.exe drauf zugreifen kann



Na eben via Process (Java Platform SE 6) ....



> und ihr halt die gewünschte ausgewählte PID geben kann ohne cmd weil das fenster stört und ist warscheinlich auch unnötig !!



das extra fenster kannst du mit dem Kommandozeilentool "start" unterdrücken. Google doch mal nach "java process cmd start" ... Da solltest du fündig werden.


----------



## Johnny919 (19. Jul 2010)

danke fürden arschtritt aber iwie bin ich zu doof ich habe das gefunden 

```
Runtime.getRuntime().exec("cmd /c TASKKILL /PID "+pid);
```
aber das ist ja iwie das selbe was ich habe nur ohne das start ( und iwie funktioniert das auch nicht )
und die anderen sachen versteh ich nicht oder sind so das die cmd öffnen und das wollte/will ich ja nicht
noch mal bitte hilfe ^^


----------



## tuxedo (19. Jul 2010)

Vielleicht sollten wir die Stiefel beim nächsten mal ne Nummer größer kaufen? 

Vielleicht hilft das:

Abgeleitet von: Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 10.6 Ausführen externer Programme und Skripte

```
String[] cmd = {"taskkill", "/F", "/T", "/PID", String.valueOf(pid)};
Runtime.getRuntime().exec(cmd);
```

"start" im zusammenhang mit "cmd" sollte aber auch gehen.

Nebenbei: Ab und zu mal einen Punkt oder ein Komma setzen. Oder hier und da auf Groß-Kleinschreibung achten. Sonst wirst du wohl oder übel weniger bis keine Antworten auf deine Fragen bekommen, weil sich die wenigsten einen Textblock mehrfach durchlesen um zu verstehen was da wie gemeint ist...

- Alex


----------



## Johnny919 (19. Jul 2010)

PRIMA funktioniert einwandfrei vielen vielen dank


----------

