PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Java Anwendung im Hintergrund + Windows Frage!


Matrix316
2005-01-18, 16:21:51
Wie mache ich es bei einer normalen Java Anwendung (über die Konsole, ohne Fenster), dass diese im Hintergrund läuft? (vielleicht als Trayicon oder ganz als Dienst) (unter Windows)

Gibts eine möglichkeit über Java bestimmte Anwendungen zu schließen, bzw. zu "killen"? Oder den Bildschirmschoner aufzurufen oder die Tastaturkombination (Windows Taste) + (L) aufzurufen?

noid
2005-01-18, 16:25:41
Nimm javaw anstatt java beim aufruf und du hast keiner konsolenanzeige mehr. Wenn du nun keine gui-machst, dann ist das programm nur im taskmanager sichbar.

Beim rest must du mal googlen. Vllt findest du ja den Quellcode von "Sancho" einem java-basierten mldonkey-client. Unter Windows kann der sich als Trayicon eingraben. Kann sein, dass man aber mit Google schneller zum Ziel kommt.

Trap
2005-01-18, 16:26:20
Alles mit JNI http://java.sun.com/j2se/1.5.0/docs/guide/jni/

HellHorse
2005-01-18, 17:46:34
Für systray hast du zwei Möglichkeiten

SWT (http://www.eclipse.org/swt/)
JDIC (https://jdic.dev.java.net/)

Ansonsten ist ev commons-daemon (http://jakarta.apache.org/commons/daemon/) was du suchst.

Matrix316
2005-01-18, 18:07:03
Also im Moment nutze ich diese Funktion:

Runtime.getRuntime().exec(...);

um ein Programm aufzurufen.

Gibts auch einen Befehl um ein laufendes Programm zu schließen? (welches schon läuft und ich nicht selbst aufgeführt habe?)

Matrix316
2005-01-19, 15:58:15
Oder anders gefragt: Gibts vielleicht ne Möglichkeit mit Java ALLE aktuell laufenden Threads abzufragen [und die dann jeweils einer Process Variablen zuzuordnen?]?

Matrix316
2005-01-20, 21:46:19
Ok, das mit den Threads hat sich erledigt. ;)

Aber eine andere Frage ist gekommen:

Wie kann ich ein Fenster "always on Top" setzen (so, dass es auch "über" der Taskleiste ist und ich quasi nix mehr machen kann) und wie kann ich den Rahmen entfernen (so dass man quasi nur noch den Inhalt des Fensters sieht und das Fenster auch nicht verschieben etc. kann)?

Die Methoden:

window.setUndecorated( true );
window.setAlwaysOnTop(true);

funktionieren leider nicht :( (Java 1.5)

EDIT: Funktioniert doch! Aber nur, wenn man das setVisible nach diesen Befehlen ausführt. :rolleyes: