Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Mit Java Windows-Programm beenden?

259 views
Skip to first unread message

Tobias Brummund

unread,
May 24, 2002, 6:29:36 PM5/24/02
to
Hallo !

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

Aljoscha Rittner

unread,
May 25, 2002, 7:31:01 PM5/25/02
to
Tobias Brummund schrieb:

> 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

michael paap

unread,
May 25, 2002, 7:57:36 PM5/25/02
to
Aljoscha Rittner wrote:

> 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

Aljoscha Rittner

unread,
May 26, 2002, 4:55:59 AM5/26/02
to
michael paap schrieb:

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.

Tobias Brummund

unread,
Jun 11, 2002, 11:58:08 AM6/11/02
to

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

michael paap

unread,
Jun 11, 2002, 3:39:50 PM6/11/02
to
Tobias Brummund wrote:

> 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

Paul Ebermann

unread,
Jun 11, 2002, 3:47:25 PM6/11/02
to
"michael paap" skribis:

> 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

michael paap

unread,
Jun 11, 2002, 3:52:22 PM6/11/02
to
Paul Ebermann wrote:

> 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

0 new messages