Gibt es die Möglichkeit, mit Java ein laufendes Windows-Programm zu
beenden, welches nicht den Focus hat?
Beispiel: Man startet den Taschenrechner. Danach startet man ein
Javaprogramm, was diesen Rechner beenden soll.
Hat jemand ein Beispiel für mich, um beliebige laufende Programme per
Java zu beenden? Würde mich freuen.
Gruß,
Tobias
> Gibt es die Möglichkeit, mit Java ein laufendes Windows-Programm zu
> beenden, welches nicht den Focus hat?
> Beispiel: Man startet den Taschenrechner. Danach startet man ein
> Javaprogramm, was diesen Rechner beenden soll.
Nein. Nicht mal Prozesse die Java selbst startet kann die VM mit der
Standard-API beeinflussen.
Es gibt aber einige Möglichkeiten.
Du startest selbst ein Programm über COM/DCOM mittels einer
entsprechenden API (Jacob zum Beispiel). Dann muß die Anwendung aber
ein (D)COM Server sein.
Du verwendest ein JNI-Interface. Dann mußt du eine native DLL
programmieren und dazu ein JNI-Wrapper schreiben.
Gruß,
Josch.
--
Einige Tags in de.comp.lang.java ( siehe http://www.dclj.de/dcljstart.html )
[XML] - Fragen zu den XML Parsern und Long Time Persistence in Java
[IO] - Frage bezüglich Eingabe/Ausgabe in Java
[SWING] - Frage bezüglich Swing
> Nein. Nicht mal Prozesse die Java selbst startet kann die VM mit der
> Standard-API beeinflussen.
Aber sicher:
public class AbschussTest {
public static void main(String[] args) {
try {
Process p = Runtime.getRuntime().exec("calc.exe");
Thread.sleep(2000);
p.destroy();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Macht genau das, was man erwartet: Taschenrechner wird gestartet und
nach 2 Sekunden geplättet. Oder meintest Du die Aussage anders?
Gruß,
Michael
Nein, du hast recht. Das ist mir völlig entgangen. :)
Gruß,
Josch.
--
Einige Tags in de.comp.lang.java ( siehe http://www.dclj.de/dcljstart.html )
[OT] - OffTopic: Der Artikel ist außerhalb des Themas von dclj
[DB] - Fragen zu Datenbanken, JDBC und SQL über Java
[JPEC] - Java PEformance Contest. Wettbewerb für den schnellsten Source.
Hallo,
danke fuer die Antworten, aber Dein Beispiel klappt ja nur, wenn java
den Prozess gestartet hat. Ich moechte aber einen schon vorher laufenden
Prozess beenden. Sagen wir, um beim Beispiel zu bleiben, der
Taschenrechner laeuft schon 1 Stunde, bevor java ueberhaupt gestartet
wird.
Ziel soll es sein, per Java aufgehende IExplorer/Netscape zu schliessen.
Wenn die den Focus haben, kann ich das per Tastenkombination, aber wenn
die im Hintergrund sind nicht. Was ich braeuchte, waere, erstens die
Moeglichkeit externe Prozesse zu beenden, und zweitens vielleicht eine
Erstellungszeit zu ermitteln, damit ich das richtige Fenster schliesse.
Aber ein Code, der laufende Programme beendet waere auch schon was ;)
Gruss,
Tobias
> danke fuer die Antworten, aber Dein Beispiel klappt ja nur, wenn java
> den Prozess gestartet hat.
Ich weiss. Es ging ja auch nur darum, Joschs Aussage zurechzurücken.
> Ich moechte aber einen schon vorher laufenden
> Prozess beenden. Sagen wir, um beim Beispiel zu bleiben, der
> Taschenrechner laeuft schon 1 Stunde, bevor java ueberhaupt gestartet
> wird.
Das dürfte nur mit JNI möglich sein, sollte da aber kein Problem sein,
schließlich kann man von VB aus auch irgendwelche Fenster fernsteuern
incl. schließen.
Unter Linux/UNIX könntest Du Dir die PID besorgen und dann per
Runtime.exec den Prozess killen.
Gruß,
Michael
> Tobias Brummund wrote:
>
> > Ich moechte aber einen schon vorher laufenden
> > Prozess beenden. Sagen wir, um beim Beispiel zu bleiben, der
> > Taschenrechner laeuft schon 1 Stunde, bevor java ueberhaupt gestartet
> > wird.
>
> Das dürfte nur mit JNI möglich sein, sollte da aber kein Problem sein,
> schließlich kann man von VB aus auch irgendwelche Fenster fernsteuern
> incl. schließen.
Eine andere Möglichkeit wäre die Verwendung von
java.awt.Robot: Screenshot machen, passendes Fenster
finden, mit Klick auf [X] schließen ...
Viel Spaß bei der Bilderkennung ...
Paul
> Eine andere Möglichkeit wäre die Verwendung von
> java.awt.Robot: Screenshot machen, passendes Fenster
> finden, mit Klick auf [X] schließen ...
<OMC> How Bizarre! </OMC>
Gruß,
Michael