2010-03-02 20 views
32

Ich habe eine C# -Konsolenanwendung (A). Ich möchte andere Konsolen-App (B) von App A aus (auf synchrone Weise) ausführen, so dass B dasselbe Befehlsfenster verwendet. Wenn B existiert, sollte A in der Lage sein, den Exit-Code von B zu lesen.Ausführen der Konsolenanwendung von einer anderen Konsolenanwendung

Wie geht das? Ich brauche nur diesen kleinen Tipp, wie man diese andere App im selben cmd-Fenster ausführt.

Antwort

30

Sie können Process.Start verwenden, um die andere Konsolenanwendung zu starten.

Sie müssen den Prozess mit ProcessStartInfo.RedirectOutput Satz true und UseShellExecute Satz false konstruieren, um der Lage sein, die Ausgabe selbst zu nutzen.

Sie können dann die Ausgabe mit StandardOutput.ReadToEnd auf den Prozess lesen.

+0

Unter Windows 10, wo Cmd die Windows Server 2008 Build Environment ist, funktioniert dies nicht mehr, die neue Anwendung öffnet sofort ein neues Fenster. – Georg

9

Sie können einen anderen Prozess mit dem Aufruf starten. Die examples here zeigen, wie Ausgaben von anderen Prozessen gelesen werden und auf den Abschluss warten.

4

Sie können einen anderen Prozess mit Process.Start starten - spielt keine Rolle, ob es eine Konsolenanwendung ist oder nicht. Wenn Ihre App bereits in einem Konsolenfenster ausgeführt wird, wird die neu erstellte App dieses Konsolenfenster ebenfalls verwenden.

var proc = Process.Start("...path to second app"); 
proc.WaitForExit(); 
var exitCode = proc.ExitCode; 

Seien Sie sicher, dass die Dokumente auf der Prozessklasse bereit, da es eine Vielzahl von kleinen Nuancen sind, die die Art und Weise Ihre sekundäre App gestartet wird, beeinflussen können.

1

Füllen Sie eine System.Diagnostics.ProcessStartInfo und übergeben es an Process.Start

können Sie WaitForExit auf dem resultierenden Prozess, und verwenden Sie dann ExitCode Eigenschaft des Prozesses verwenden den Rückgabewert zu sehen.

0

Sie können „wrap“ die alte Konsole App mit dem neuen, indem sie es in Ihren Referenzen einschließlich und Anfahren durch den Aufruf welcher Methode in der run-Methode der Programmklasse genannt wird

1

ich in der Lage war zu laufen das Programm ‚B‘ als Teil des gleichen Befehlsfenster durch die folgende Konfiguration Aufruf:

ConsoleColor color = Console.ForegroundColor; 
ProcessStartInfo startinfo = new ProcessStartInfo(nameProgramB); 
startinfo.CreateNoWindow = false; 
startinfo.UseShellExecute = false; 
Process p = Process.Start(startinfo); 
p.WaitForExit(); 
Console.ForegroundColor = color; 

diese Weise laufen beide Programme seamlesly wie sie ein einziges Programm. 'nameProgramB' ist der Name für das Programm 'B'. Hoffe das hilft.

Verwandte Themen