Hallo Java-Forum Nutzer,
Ich habe ein Windows Konsolen Programm (.exe) welches Werte ausließt und diese jede Sekunde in einer neuen Konsolen Zeile ausgibt.
Gibt es eine Möglichkeit das Windows Konsolen Programm mit von meinen Java Programm bestimmten Parameter zu starten. Das Windows Konsolen Programm im Hintergrund laufen zu lassen und die Ausgabe des Windows Konsolen Programm in mein Java Programm (z.B. in einen String) einzulesen. Bei Drücken eines Buttons in meinen Java Programm soll das Windows Konsolen Programm wieder beendet werden.
Ich habe mich mit der Java Runtime-Klasse auseinander gesetzt bin jedoch nicht daraus schlau geworden.
Gibt es eine Möglichkeit dafür ?
Meine versuche bis jetzt:
Meine Funktion um das Windows Programm zu starten. Jedoch Funktioniert nur das Starten des Programms jedoch nicht das Einlesen und das Beenden.
SyncPipe.java (Hab ich Gegooget)
Gibt es bessere Möglichkeiten das zu Realisieren ?
Und gibt es eine Möglichkeit Befehle von dem Java Programm an das externe Windows Programm zu senden während es läuft ?
vielen Dank schon mal im Voraus.
Ich habe ein Windows Konsolen Programm (.exe) welches Werte ausließt und diese jede Sekunde in einer neuen Konsolen Zeile ausgibt.
Gibt es eine Möglichkeit das Windows Konsolen Programm mit von meinen Java Programm bestimmten Parameter zu starten. Das Windows Konsolen Programm im Hintergrund laufen zu lassen und die Ausgabe des Windows Konsolen Programm in mein Java Programm (z.B. in einen String) einzulesen. Bei Drücken eines Buttons in meinen Java Programm soll das Windows Konsolen Programm wieder beendet werden.
Ich habe mich mit der Java Runtime-Klasse auseinander gesetzt bin jedoch nicht daraus schlau geworden.
Gibt es eine Möglichkeit dafür ?
Meine versuche bis jetzt:
Meine Funktion um das Windows Programm zu starten. Jedoch Funktioniert nur das Starten des Programms jedoch nicht das Einlesen und das Beenden.
Java:
Process p = null;
String StringAuswahl, eingabe;
void startExternesProgramm() {
String[] command =
{
"cmd",
};
try {
p = Runtime.getRuntime().exec(command);
} catch (IOException e) {
e.printStackTrace();
}
new Thread(new SyncPipe(p.getErrorStream(), System.err)).start();
new Thread(new SyncPipe(p.getInputStream(), System.out)).start();
PrintWriter stdin = new PrintWriter(p.getOutputStream());
stdin.println("infoWert.exe" +" -w " +StringAuswahl);
stdin.close();
//ausgabe auslesen
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
try {
eingabe = reader.readLine();
} catch (IOException e) {
e.printStackTrace();
}
void stopExternesProgramm(){
p.destroy();
}
SyncPipe.java (Hab ich Gegooget)
Java:
package gui;
import java.io.*;
class SyncPipe implements Runnable
{
public SyncPipe(InputStream istrm, OutputStream ostrm) {
istrm_ = istrm;
ostrm_ = ostrm;
}
public void run() {
try
{
final byte[] buffer = new byte[1024];
for (int length = 0; (length = istrm_.read(buffer)) != -1; )
{
ostrm_.write(buffer, 0, length);
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
private final OutputStream ostrm_;
private final InputStream istrm_;
}
Gibt es bessere Möglichkeiten das zu Realisieren ?
Und gibt es eine Möglichkeit Befehle von dem Java Programm an das externe Windows Programm zu senden während es läuft ?
vielen Dank schon mal im Voraus.
Zuletzt bearbeitet: