在我的应用程序中嵌入控制台应用

时间:2012-01-07 18:16:25

标签: c#

我有一个控制台应用程序,它启动另外两个控制台应用程序(不是用C#编写的)。

我可以将应用程序的输出定向到我的应用程序的同一个CMD窗口吗?

甚至只是禁止它们显示?

2 个答案:

答案 0 :(得分:3)

对于这两个问题都是 - 您可以重定向输出并停止显示。

查看ProcessStartInfo类 - 将其传递给Process类的构造函数,以确保它按照您的需要启动。

var psi = new ProcessStartInfo("path to exe to run");

// ensure output is redirected
// several options to read - using the StandardOutput stream of the process
//    another option is to hook up the OutputDataReceived event
psi.UseShellExecute = false;
psi.RedirectStandardOutput = true;


// ensure no window
psi.CreateNoWindow = true;
psi.WindowStyle = ProcessWindowStyle.Hidden; // requires UseShellExecute = false

答案 1 :(得分:1)

描述

您可以使用RedirectStandardOutput

将输出重定向到您的呼叫控制台应用程序

样品

ProcessStartInfo start = new ProcessStartInfo();
start.FileName = @"C:\TheOtherApplication.exe"; // Specify exe name.
start.UseShellExecute = false;
start.RedirectStandardOutput = true;

using (Process process = Process.Start(start))
{
    // Read in all the text from the process with the StreamReader.
    using (StreamReader reader = process.StandardOutput)
    {
    string result = reader.ReadToEnd();
    Console.Write(result);
    }
}

您还可以使用ProcessStartInfo的CreateNoWindow属性隐藏窗口。

更多信息