# Prozess über Prozessnamen beenden



## Nicer (1. Dez 2010)

Hallo leute,

ich bastele zurzeit an einem Tool dass alle 10 sekunden einen bestimmten Prozess abschiesst ( will dem IT lehrer mal demonstrieren dass die von ihm programmierte Bildschirmsperre einfach zu umgehen ist  ). Habe so ein Programm vor Jahren mal in Visual Basic geschrieben , aber ich will das auf jeden fall in Java machen.

Wie ich mit das vorstelle : 

Wenn ich das programm öffne dann erscheint es nicht in der Statusleiste von Windows sondern nur ein Kleines Icon im Tray erscheint. dieses Icon hat ein kontextmenü ( rechtsklick ) mit einer Schaltfläche beenden ( Vielleicht auch über eine Tastenkombi ). Sobald man das Programm startet soll eine While Schleife solange alle 10 sekunden den besagten prozess überprüfen ( halt schauen ob der prozess läuft ) und bei bedarf killen bis ich die Beenden Schaltfläche klicke , die die bedingung der while auf false setzt und dass programm sauber beendet. Die krönung wäre natürlich noch wenn mein programm nicht in der prozessliste erscheint, aber das ist erstmal zweitrangig

Die ganze schleifenprogrammierei und so is kein problem , nur die zeile die dann den prozess letzenendes über den prozessnamen abschiesst kenne ich nicht. Wie man ein programm mit Trayicon erstelle dass in der Statusleiste unsichtbar ist habe ich schon 

Mit der SuFu fand ich nur diverse verweise auf Process , und eine Taskkill.exe mit der mall einen Prozess nach PID abschiessen kann. Ich möchte das ja aber über den Prozessnamen.

Schonmal danke für eure Hilfe


----------



## LoR (1. Dez 2010)

TASKKILL /IM notepad.exe

bzw. 

TASKKILL /IM notepad.exe /T /F
- /T killed alle untergeordneten Prozesse gleich mit
- /F Erzwingt das beenden des Prozesses


----------



## Empire Phoenix (1. Dez 2010)

jo den befehl dann mit Runtime.exec ausführen lassen


----------



## Nicer (1. Dez 2010)

Kay , bös gut , kannich eig in eine schleife irgendwie eine pause einbauen , oder so dasses die nur alle 10 sekunden ausführt ohne das ganze programm per Treath.sleep() pausieren zu müssn ?


----------



## U2nt (1. Dez 2010)

In nem extra Thread die schleife einbauen und den dann 10 Sekunden pausieren lassen?


----------



## Nicer (1. Dez 2010)

So und da kommich auch schon an die grenzen meiner kleinen programmiererwissenswesen. 

zu gut deutsch :

wie gehtn dat ? XD


----------



## preachie (1. Dez 2010)

Kannst es alternativ auch über Timer und TimerTask realisieren: Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 11.10 Zeitgesteuerte Abläufe


----------



## U2nt (1. Dez 2010)

Nicer hat gesagt.:


> So und da kommich auch schon an die grenzen meiner kleinen programmiererwissenswesen.
> 
> zu gut deutsch :
> 
> wie gehtn dat ? XD




```
public class ProcessKiller2000 implements Runnable {
  
  public static void main(String[] args) {
    Thread t = new Thread(this);
    t.start();
  }

  public void run() {
    while(prozessAmLaufen) {
      killProcess();
      this.sleep(10000);
    }
  }
}
```

Hmm weiß nich ob das die beste Lösung genau für das Problem ist... aber sollte aufjedenfall funktionieren wenn du das bei der while noch anpasst 

EDIT: Auch ne Möglichkeit preachie  -> Such dir eine aus


----------



## Nicer (1. Dez 2010)

Bös gut , hab das nun per Timer und TimerTask gemacht  

Ist auch viel Speicherschonender als eine Endlosschleife 

Vielen dank für die Rasche,freundliche und gute Hilfe 

Nun hätte ich noch eine letze Frage :

ich benutze Eclipse , und habe ein Bild dass das Trayicon bildet. Ich möchte das mit in die .jar packen so dass es nur eine file gibt.
wie geht das ?


----------



## U2nt (1. Dez 2010)

Bei der Klassenauswahl auf External und dann zum Bild durchklicken... Also bei der Klassenauswahl beim jar erstellen


----------



## Nicer (2. Dez 2010)

Okey habs  Vielen dank an Alle


----------



## thE_29 (2. Dez 2010)

http://www.java-forum.org/codeschnipsel-u-projekte/34052-prozesskiller-win32-serivce-handler.html
Nutzt halt ne DLL!

Kann man sogar den "QUIT Befehl" unter Windows schicken (also sauberes beenden).


----------



## areafo (3. Dez 2010)

Aber Quit kann der Lehrer in seinem Programm abfangen mit einer Aktion wie beforequit boolean prüfen ob das beabsichtigt war ^^. Kill ist da schon härter.


----------



## Nicer (3. Dez 2010)

Genau , ich will den prozess ja nicht herunterfahren sondern einfach..........  KOPF AB 

Haut nu übrigens alles hin


----------



## LoR (4. Dez 2010)

Ich denke das wird wohl so nicht funktionieren. Sehr wahrscheinlich wird der von deinem Lehrer gestartete Prozess mit einer höhren Berechtigungsstufe ausgeführt/gestartet (z.B. Administrator) als du an dem Rechner besitzt. Sollte das so sein, dann kannst du den Prozess nicht beenden.


----------



## Nicer (4. Dez 2010)

Also ich habs getestet und es läuft einwandfrei  , der Lehrer gibt dem PC nur ein Signal den Prozess zu starten , der dann  ( idiotischerweise ) von meinem user aus gestartet wird


----------

