从其他控制台应用运行控制台应用

时间:2010-03-02 19:40:38

标签: c# console-application

我有一个C#控制台应用程序(A)。我想从应用程序A(以同步方式)执行其他控制台应用程序(B),以便B使用相同的命令窗口。当B存在时,A应该能够读取B的退出代码。

怎么做?我只需要关于如何在同一个cmd窗口中运行这个其他应用程序的这个小技巧。

6 个答案:

答案 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方法中调用的任何方法来“启动”旧控制台应用程序