2010-02-23 4 views
9

Nun, der Titel fasst die Frage ziemlich zusammen. Das einzige, was ich gefunden habe, ist this , aber ich bin mir nicht sicher, ob das der Weg ist.Wie erkennt man über Java, ob ein bestimmter Prozess unter Windows läuft?

+5

mehrdeutige Frage. Möchten Sie herausfinden, ob der Windows-Prozess eine Java-App ist, oder möchten Sie herausfinden, wie eine Java-Anwendung erkennen kann, ob sie unter Windows läuft? –

+2

Worum müssen Sie arbeiten? Eine Prozess-ID? Der Name der ausführbaren Datei? Hast du den Prozess gestartet? Wartest du, ob es schon fertig ist? Im Grunde, warum möchten Sie überprüfen, ob es läuft. Je nach Situation gibt es unterschiedliche Techniken. –

+2

@Stephen C du hast vollkommen recht, ich war nicht klar genug! Ich möchte wissen, wie programmgesteuert zu sehen, wenn zum Beispiel notepad.exe ausgeführt wird oder wenn firefox.exe usw. läuft ... hoffe, dass es löscht :) – gmunk

Antwort

12

Sie können die wmic Dienstprogramm verwenden, um die Liste der laufenden Prozesse zu überprüfen.
Angenommen, Sie explorer.exe Prozess ist, wenn das Fenster überprüfen möchten laufen:

String line; 
try { 
    Process proc = Runtime.getRuntime().exec("wmic.exe"); 
    BufferedReader input = new BufferedReader(new InputStreamReader(proc.getInputStream())); 
    OutputStreamWriter oStream = new OutputStreamWriter(proc.getOutputStream()); 
    oStream .write("process where name='explorer.exe'"); 
    oStream .flush(); 
    oStream .close(); 
    while ((line = input.readLine()) != null) { 
     System.out.println(line); 
    } 
    input.close(); 
} catch (IOException ioe) { 
    ioe.printStackTrace(); 
} 

http://ss64.com/nt/wmic.html oder http://support.microsoft.com/servicedesks/webcasts/wc072402/listofsampleusage.asp für einige Beispiel von dem, was Sie von wmic bekommen ...

+0

Danke dafür, wie ich in meinem Kommentar früh sagte ich war nicht klar genug. :) – gmunk

+0

Ist es möglich, dann herauszufinden, wie man einen laufenden Prozess von der Windows-Handle-ID zu töten? – JamesC

+0

Danke für das nette Beispiel. Gibt es eine Möglichkeit, diese Problemplattform unabhängig zu behandeln? Ich brauche diese Funktionalität auch unter Linux und Apple. – Socrates

2

os.name sollte es tun. Weitere Informationen here

2

Hängt davon ab, wofür Sie es brauchen!

Die meisten Informationen können von den Standardlaufzeiteigenschaften abgeleitet werden, ohne die Eigenschaften des Betriebssystems zu überprüfen.

Werfen Sie einen Blick auf, was http://java.sun.com/j2se/1.5.0/docs/api/java/lang/System.html#getProperties() bietet:

java.version Java Runtime Environment version 
java.vendor Java Runtime Environment vendor 
java.vendor.url Java vendor URL 
java.home Java installation directory 
java.vm.specification.version Java Virtual Machine specification version 
java.vm.specification.vendor Java Virtual Machine specification vendor 
java.vm.specification.name Java Virtual Machine specification name 
java.vm.version Java Virtual Machine implementation version 
java.vm.vendor Java Virtual Machine implementation vendor 
java.vm.name Java Virtual Machine implementation name 
java.specification.version Java Runtime Environment specification version 
java.specification.vendor Java Runtime Environment specification vendor 
java.specification.name Java Runtime Environment specification name 
java.class.version Java class format version number 
java.class.path Java class path 
java.library.path List of paths to search when loading libraries 
java.io.tmpdir Default temp file path 
java.compiler Name of JIT compiler to use 
java.ext.dirs Path of extension directory or directories 
os.name Operating system name 
os.arch Operating system architecture 
os.version Operating system version 
file.separator File separator ("/" on UNIX) 
path.separator Path separator (":" on UNIX) 
line.separator Line separator ("\n" on UNIX) 
user.name User's account name 
user.home User's home directory 
user.dir User's current working directory 
0

Sie versuchen, ein Prozess, um festzustellen, ob Sie noch erstellt läuft?

  1. Wenn Sie die PID haben, wird der Link, den Sie gepostet haben, tun.
  2. Wenn der andere Prozess auch Ihr eigener ist (Ihr Code), können Sie dafür sorgen, dass eine Datei exklusiv gesperrt wird. versuchen Sie, es vom anderen Code zu sperren, wenn es erfolgreich ist, dass der andere Prozess nicht läuft.
Verwandte Themen