我正在使用 .NET 4 控制台应用程序中的以下代码:
private static void AttachToConsole ()
{
System.Diagnostics.Process process = null;
process = new Process();
process.StartInfo.FileName = "cmd.exe";
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = false;
process.EnableRaisingEvents = true;
process.Start();
process.OutputDataReceived += new DataReceivedEventHandler(Process_OutputDataReceived);
Console.Write("Press any key to continue...");
Console.ReadKey();
process.OutputDataReceived -= new DataReceivedEventHandler(Process_OutputDataReceived);
process.CloseMainWindow();
process.Close();
}
运行时,只有应用程序本身的控制台窗口会显示,但 [cmd.exe]
进程窗口仍然不可见。为什么会这样?我该如何改变这种行为?
最佳答案
如果您设置 UseShellExecute = true
,cmd 进程窗口将会出现。但是,您需要将 RedirectStandardInput 和 RedirectStandardpOutput 设置为“false”(或将它们注释掉)。
private static void AttachToConsole ()
{
System.Diagnostics.Process process = null;
process = new Process();
process.StartInfo.FileName = "cmd.exe";
//process.StartInfo.RedirectStandardInput = true;
//process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.UseShellExecute = true;
process.StartInfo.CreateNoWindow = false;
process.EnableRaisingEvents = true;
process.Start();
process.OutputDataReceived += null;
Console.Write("Press any key to continue...");
Console.ReadKey();
process.OutputDataReceived -= null;
process.CloseMainWindow();
process.Close();
}
关于c# - 重定向输出时控制台窗口不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17093366/