ERLEDIGT
JA
JA
ANTWORTEN
5
5
ZUGRIFFE
306
306
EMPFEHLEN
-
Hallo, ich würde gerne fremde Konsolenprogramme in meinem Projekt nutzen. Wie man diese Ausführt und die Ausgabe abfängt habe ich bereits hier gefunden: http://www.java2s.com/Code/CSharp/De...cessOutput.htm
Jetzt habe ich aber ein Problem bei Programmen, die nicht sofort terminieren und eine Ausgabe liefern. Z.B. bei Netzwerk-Programmen wird ja oft beim öffnen nur der Server oder so übergeben und das Programm startet dann (z.B. netzp.exe 123.123.123.123). Dann kann man. "GET 123.htm" schreiben und erhält dann eine Antwort. Erst mit "quit" wird das Programm geschlossen.
Mein Problem ist jetzt, dass ich gerne die Ausgabe von "GET 123.htm" abfangen würde. Hierzu hab ich aber leider nichts gefunden...
-
Das, was du brauchst, nennt sich Pipe
Google gibt da genug dazu
-
Hi
Ich hab nicht ganz verstanden, was du vor hast. Aber ich geh davon aus, dass du die Anwendung über die Process-Klasse startest. Über das Property StandardOutput können Ausgaben des Prozess abgefragt werden.Grüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
Sorry für die Ungenauigkeit, war gestern etwas in Eile.
Also ich hab das ganze mal an einem Beispiel getestet. Das soll jetzt mal das Konsolenprogramm sein:
Jetzt habe ich es so hinbekommen zumindest das "Hier wird eine 1..." zu bekommen:Code :1 2 3 4 5 6 7 8 9
Console.WriteLine("Hier wird eine 1 an ein Wort gehängt!"); string asd = ""; while (!asd.Equals("quit")) { asd = Console.In.ReadLine(); string tmp = asd + "1"; Console.WriteLine("Das ergibt " + tmp); } Console.WriteLine("Ende!");
Allerdings hat sich dabei ein Konsolenfenster geöffnet und ist dann hängengeblieben und ich musste es schließen.Code :1 2 3 4 5 6 7
Process p = new Process(); p.StartInfo.FileName = "constest.exe"; p.StartInfo.UseShellExecute = false; p.StartInfo.RedirectStandardOutput = true; p.Start(); string output = p.StandardOutput.ReadToEnd(); textBox1.Text = output;
Jetzt würde ich gerne, am besten ohne das sich ein Konsolenfenster öffnet, Strings an das Konsolenprogramm übergeben und das Ergebnis auslesen. Also in diesem Fall will ich z.B. "asd" übergeben und "Das ergibt asd1" zurückbekommen.
Irgendwie muss das ja gehen weil doch z.B. die ganzen Java Framworks auch nur die Konsolenanwendungen einbinden oder?
Danke!
-
31.03.10 14:21 #5
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Natürlich ist es "hängengeblieben" - es wartete auf eine Eingabe.
Code csharp:1 2 3
p.StartInfo.RedirectStandardInput = true; // ... p.StandardInput.WriteLine("asd\nquit");
Damit sich kein Konsolenfenster öffnet mußt du eben kein Konsolenprogramm erstellen.
GrußIf at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
Ah super dank dir. Eigentlich ja ganz logisch aber da bin ich nicht drauf gekommen

Mh ok mit dem Konsolen-Fenster hast du recht. Dann wird es wohl bei den Javaprogrammen einen Parameter geben, dass die Konsole nicht geöffnet wird.
Danke nochmal allen!
Ähnliche Themen
-
weiteren Code nach dispatcher.forward(request, response); nicht ausführen - wie?
Von Kryptaesthesie im Forum Enterprise Java (JEE, J2EE, Spring & Co.)Antworten: 0Letzter Beitrag: 09.03.09, 10:01 -
Standby Modus spinnt nach dem Einsetzen eines weiteren Laufwerks
Von der_koarl im Forum Microsoft WindowsAntworten: 0Letzter Beitrag: 29.07.08, 11:12 -
Konsolenprogramm - Ausgabe ändern/überschreiben
Von M_Kay im Forum JavaAntworten: 4Letzter Beitrag: 16.07.08, 14:26 -
Ein Verzeichnis nach weiteren Verzeichnissen durchsuchen
Von StefanR im Forum PHPAntworten: 2Letzter Beitrag: 11.11.04, 14:32 -
anzeigeprobs nach einfügen einer weiteren tabelle ...
Von Prailer im Forum HTML & XHTMLAntworten: 3Letzter Beitrag: 25.01.02, 05:05





Zitieren


Login





