我有一个控制台应用程序,它启动另外两个控制台应用程序(不是用C#编写的)。
我可以将应用程序的输出定向到我的应用程序的同一个CMD窗口吗?
甚至只是禁止它们显示?
答案 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
属性隐藏窗口。