Consoleprogramm aus dotNet heraus starten
-
Hallo,
Ich hab ein kleines aber feines Konsolenprogramm aus den 90er Jahren, dessen
Ausgabe ich in einem C# Projekt bräuchte. Ist es möglich, das Programm zu starten, den Output (der üblicherweise auf die Kosole erscheint) abzufangen und das Programm wieder zu beenden - ohne das der Benutzer irgendwas davon mitbekommt ?
-
Hallo,
bei Posix würde ich mit Pipes arbeiten, tun die in Windows das gleiche?
Ansonsten kannst du den Output deines Konsolenprogrammes per ">" in eine Datei umleiten und diese dann auswerten. Hässlich, aber effektiv.
-
Ist das ein DOS-Programm oder Win32? Mit DOS hatte ich mal ärgste Schwierigkeiten in dieser Hinsicht.
-
proc.StartInfo.FileName = "C:\\Programme\\Microsoft Visual Studio .NET 2003\\SDK\\v1.1\\Bin\\tlbimp.exe"; proc.StartInfo.UseShellExecute = false; proc.StartInfo.RedirectStandardOutput = true; proc.StartInfo.RedirectStandardError = true; proc.StartInfo.CreateNoWindow = true; proc.StartInfo.Arguments = param; proc.Start(); //Wartet bis der Prozess beendet wird proc.WaitForExit(); // in der Konsole eingibt es anstandslos abläuft txtProccessOutput.Text += "Prozessausgabe:\r\n---------------------------\r\n\r\n"; txtProccessOutput.Text += proc.StandardOutput.ReadToEnd(); txtProccessOutput.Text += "\r\n\r\nFehler:\r\n----------\r\n\r\n"; txtProccessOutput.Text += proc.StandardError.ReadToEnd();
Hier wird ein IDE-Tool vom .NET was kommandozeilenbasiert ist gestartet!
Das Wichtige sind die MethodenWaitForExit();
damit gibst Du dem angestossenen Programm Zeit irgendwie seine Arbeit zu
beendenund dann noch
StandardOutput.ReadToEnd();
damit holst Du das was das Programm sonst auf der Shell ausgibt!
Voraussetzung damit dies funzt ist
proc.StartInfo.UseShellExecute = false; proc.StartInfo.RedirectStandardOutput = true; proc.StartInfo.RedirectStandardError = true; proc.StartInfo.CreateNoWindow = true;
Was soviel bedeutet starte das Programm ohne Shell lenke Ausgabe und Fehlerausgabe um
mfg sclearscreen