我有一个C#控制台应用程序(A)。我想从应用程序A(以同步方式)执行其他控制台应用程序(B),以便B使用相同的命令窗口。当B存在时,A应该能够读取B的退出代码。
怎么做?我只需要关于如何在同一个cmd窗口中运行这个其他应用程序的这个小技巧。
答案 0 :(得分:35)
您可以使用Process.Start
启动其他控制台应用程序。
您需要将ProcessStartInfo.RedirectOutput
设置为true
并将UseShellExecute
设置为false
来构建流程,以便能够自己使用输出。
然后,您可以使用流程上的StandardOutput.ReadToEnd
读取输出。
答案 1 :(得分:9)
您可以使用Process.Start()
来启动其他流程。 examples here显示如何从其他进程读取输出并等待它完成。
答案 2 :(得分:4)
你可以使用Process.Start启动另一个进程 - 如果它是一个控制台应用程序并不重要。如果您的应用程序已在控制台窗口中运行,则新生成的应用程序也将使用该控制台窗口。
var proc = Process.Start( "...path to second app" );
proc.WaitForExit();
var exitCode = proc.ExitCode;
请确保在Process类上准备好文档,因为可能会影响辅助应用程序启动方式的各种细微差别。
答案 3 :(得分:2)
我能够运行该程序' 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;
这样,两个程序就像一个单独的程序一样无缝运行。 ' nameProgramB'是程序的名称' B'。希望这会有所帮助。
答案 4 :(得分:1)
填写System.Diagnostics.ProcessStartInfo 并将其传递给Process.Start
您可以在生成的流程上WaitForExit
,然后使用流程的ExitCode
属性查看返回值。
答案 5 :(得分:1)
您可以通过将旧控制台应用程序包含在引用中并通过调用程序类的run方法中调用的任何方法来“启动”旧控制台应用程序