我有一個C#控制檯應用程序(A)。我想從B應用程序A(以同步方式)執行其他控制檯應用程序(B),以便B使用相同的命令窗口。當B存在時,A應該能夠讀取B的退出代碼。從其他控制檯應用程序運行控制檯應用程序
如何做到這一點?我只需要關於如何在同一個cmd窗口中運行這個其他應用程序的小技巧。
我有一個C#控制檯應用程序(A)。我想從B應用程序A(以同步方式)執行其他控制檯應用程序(B),以便B使用相同的命令窗口。當B存在時,A應該能夠讀取B的退出代碼。從其他控制檯應用程序運行控制檯應用程序
如何做到這一點?我只需要關於如何在同一個cmd窗口中運行這個其他應用程序的小技巧。
您可以使用Process.Start
啓動其他控制檯應用程序。
您需要構建過程與ProcessStartInfo.RedirectOutput
設置爲true
和UseShellExecute
設置爲false
,以便能夠利用自己的輸出。
然後您可以使用StandardOutput.ReadToEnd
讀取輸出過程。
您可以使用Process.Start()
調用啓動另一個進程。 examples here顯示如何讀取其他進程的輸出並等待它完成。
您可以使用Process.Start啓動另一個進程 - 無論它是否是控制檯應用程序都無關緊要。如果您的應用程序已在控制檯窗口中運行,則新產生的應用程序也將使用該控制檯窗口。
var proc = Process.Start("...path to second app");
proc.WaitForExit();
var exitCode = proc.ExitCode;
一定要準備好對Process類的文檔,因爲有多種可能影響您的輔助應用啓動的方式細微差別的。
填寫一個System.Diagnostics.ProcessStartInfo 並將它傳遞給Process.Start
您可以WaitForExit
上產生的過程,並使用再使用的過程中ExitCode
財產看到返回值。
,你可以將其包含在您的引用,並通過調用任何方法在程序中調用類的run方法
我能夠運行開始它關閉「包裝」用新的舊的控制檯應用程序節目「B」爲相同的命令窗口的一部分通過調用以下配置:
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;
這種方式,像它們是一個單一節目這兩個程序seamlesly運行。 'nameProgramB'是程序'B'的名字。希望這可以幫助。
在Windows 10上,cmd是Windows Server 2008構建環境,這不再起作用,新應用程序立即打開一個新窗口。 – Georg 2016-09-22 15:17:04