Ausgabe von Kommandozeilenprogramm in RichTextBox

Coalminer

Mitglied
Hallo,

ich möcht über eine Windows-Form eine exe-File starten die eigendlich auf Kommendozeilenebene verwendung findet.
Die Exe soll aber ihre Ausgabe nicht in einer Command-Box ausgene, sondern in einer RichtextBox.

Frage:
Wie starte ich die EXE so, dass ihre Ausgabe in einer String-Variablen landet?
 
ok, danke schonmal

jetzt hab ich aber bei Verwendung von
myRichTextBox.AppendText(myProcess.StandardOutput.ReadToEnd());
das Problem das nur die erste Ausgabezeile gelesen wird.

Wie kommt man nun an alle Ausgabezeilen.
Muss man ein Event abfangen welches bei jeder Zeile ausgelöst wird ?
Oder muss man Pollen bis der Thread zuende ist ?
 
ReadToEnd gibt die alles ab der aktuellen Position des Streams wider. Wenn du den vorher an eine andere Position als den Anfang gesetzt hast, kann das zum Beispiel passieren.
Schreib doch den Inhalt des Streams vorher in eine String - Variable bzw. Debugge und schau was im Stream steht.
 
Hi!

StreamReader.ReadToEnd() liest den gesamtem Streaminhalt aus, der von dem Prozess ausgegeben wird.
D. h. das die Methode solange blockt, bis der Prozess beendet wird.
Daher währe es günstig innerhalb eines Threads mit der StreamReader.ReadLine() Funktion Zeile für Zeile auszulesen
und diese dann via eines Events an den MainThread weiterzugeben.
Festellen ob der Prozess beeendet wurde kannst anschließend mit dem Process.Exited Event.

Das ganze lässt sich bequem in eine Klasse implementieren...
Wenn Du möchtest mach ich Dir ein Beispiel.
 
Zurück