Umleiten von standard-Eingabe von Konsole-Anwendung
Ich habe eine Konsole-Anwendung, die ich bin versucht, zu automatisieren, durch umleiten von Standard-Eingabe-stream des Prozesses. Im manuellen Modus nach dem öffnen der Anwendung, es wartet auf user-input wie unten
Habe ich den Prozess mit der umgeleiteten Standardeingabe-stream.Der code-snippet sieht wie folgt aus,
Process newProcess = new Process();
newProcess.StartInfo.FileName = exeName;
newProcess.StartInfo.Arguments = argsLine;
newProcess.StartInfo.UseShellExecute = false;
newProcess.StartInfo.RedirectStandardOutput = false ;
newProcess.StartInfo.CreateNoWindow = false;
newProcess.StartInfo.RedirectStandardInput = true;
newProcess.Start();
Sondern die Schaffung Prozess wie dieser gibt eine unendliche Schleife, die unten gezeigt ist,
Es so, wie ich bin senden Enter
key-Befehl kontinuierlich an den Prozess-input-stream. Kann mir jemand zeigen Sie mir, was mache ich hier falsch?
Ähnlich, standard-stream-Ausgabe-Umleitung ist auch nicht die Arbeit nach
newProcess.StartInfo.RedirectStandardOutput = true
Aber ich kann zu verwalten.
Tut Umleitung von standard-streams arbeiten mit allen Konsolen-Anwendungen oder ist es eine Ausnahme?
Ich habe nicht den code von der console-Anwendung. Es ist ein Drittanbieter-tool.
Bitte, keine Informationen über eine Sprache verwendet, die in einer Frage-Titel, es sei denn, es würde keinen Sinn machen, ohne es. Tags, die diesem Zweck dienen.
InformationsquelleAutor Vignesh | 2014-02-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist eine Klasse, die ich geschrieben habe, um zu behandeln, dass Art von Sachen. Fühlen Sie sich frei, es zu benutzen. Sein Zweck ist es, starten Sie eine Konsole-Anwendung und zu "reden". Es hat die Fähigkeit zu empfangen-Ausgang als auch. Viel Glück.
Sind Sie sich sicher, die Antwort muss enthalten so viel Lärm wie Regionen und offensichtliche xml-Kommentare?
Tut mir Leid, dass es kopieren, einfügen aus einer Datei, die formatiert wurde stylecop.
Ich habe versucht, dies über
var cam = new ConsoleAppManager("sudo"); cam.ExecuteAsync("apt install vim"); while (cam.Running) Thread.Sleep(1000);
aber es hat nicht funktioniert (es hängt), bin ich etwas fehlt?OK, ich werde hinzufügen die version 3.5 kann morgen wenn ich Zeit habe.
InformationsquelleAutor Mihail Shishkov
Folgenden die Vorherige Antwort, ich werde nur hinzufügen, dass die Erweiterung die Methode der SubArray, nur für den Fall fügen Sie diese Klasse, um Ihren code, wo es nicht verschachtelte innerhalb jeder Klasse ( nicht der code Aussehen lesbar in einem Kommentar, also habe ich es hier )
InformationsquelleAutor shakram02