fernsteuern fremder Anwendungen mittels Java

Diskutiere fernsteuern fremder Anwendungen mittels Java im Programmierung Forum im Bereich Software Forum; Hi Leute, ich habe folgendes Problem: In Java kann man mittels java.lang.Process proc = Runtime.getRuntime().exec(*Kommando*); ein Programm...
  • fernsteuern fremder Anwendungen mittels Java Beitrag #1
Quant

Quant

Threadstarter
Dabei seit
19.07.2011
Beiträge
67
Hi Leute,

ich habe folgendes Problem:

In Java kann man mittels
Code:
java.lang.Process proc = Runtime.getRuntime().exec(*Kommando*);
ein Programm starten (Beispielsweise notepad.exe als Kommando startet den Windowseditor)

Man kann sogar mittels:
Code:
java.io.InputStream in = proc.getInputStream();
den Input stream ermittlen bzw. mit
Code:
java.io.OutputStream out = proc.getOutputStream();
den Ausgabestream des Programmes bestimmen und dann mithilfe von
Code:
while(in.available() > 0) *do something*
bzw.
Code:
*init buffer*; .write(buffer);
Kommandos an ein einfaches Konsolenprogramm schicken, bzw. von diesem annehmen, also das Programm fernsteuern.

Das ganze funktioniert allerdings nur solange, wie das Programm keinen ungepufferten Ausgabestream hat. Programme mit gepufferten Ausgabestreams können damit leider nicht gesteuert werden, obwohl ich das gerne tun würde. :flenn ; weiß dazu jemand eine Lösung? (Möchte nämlich ein Tool zum fernsteuern von Konsolenprogrammen schreiben^^)

(
Hinweis zu den (un)gepufferten Streams:
startet man zum Beispiel ein pythonscript mit
Code:
java.lang.Process proc = Runtime.getRuntime().exec("python test.py");
so kann man das Programm so nicht steuern, dagegen bei dem Aufruf
Code:
java.lang.Process proc = Runtime.getRuntime().exec("python -u test.py");
schon (Mit dem Flag -i geht das auch, bloß dann bekommt man probleme beim Beenden);
Der Flag -u gibt Python nämlich an,
-u : unbuffered binary stdout and stderr; also PYTHONUNBUFFERED=x
see man page for details on internal buffering relating to '-u'
Allerdings unterstützen nicht alle Programme einen derartigen Flag, daher die Frage.
Auch folgender Code funzt leider nicht:
Code:
java.io.Reader xyz = new java.io.InputStreamReader(proc.getInputStream());
java.io.BufferedReader in = new java.io.BufferedReader(xyz);
)
 
  • fernsteuern fremder Anwendungen mittels Java Beitrag #2
K

keremg

Dabei seit
02.11.2008
Beiträge
333
Vielleicht solltest Du dir mal das "Java Native Interface" oder das "Java Native Access" ansehen, mit denen Du direkt betriebssystem-native Funktionen aufrufen kannst und so evtl. mit gepufferten und ungepufferten Streams arbeiten kannst.

Gruß

K.
 
  • fernsteuern fremder Anwendungen mittels Java Beitrag #3
jhkil9

jhkil9

Dabei seit
28.09.2006
Beiträge
1.993
Alter
59
Ort
BW
Was soll das? Weshalb gräbst du uralte Threads aus? 08.08.2012, 21:46
 
Thema:

fernsteuern fremder Anwendungen mittels Java

Sucheingaben

mit java windows steuern

,

java windows fernsteuern

,

java programm applikation steuern

,
java internet sreuern
, java anderes Programm staltarten, java externes programm steuern
Oben