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 Methoden

    WaitForExit();
    

    damit gibst Du dem angestossenen Programm Zeit irgendwie seine Arbeit zu
    beenden

    und 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 🙂


Anmelden zum Antworten