C# 在编写控制台应用程序时,是否有方法创建第二个控制台以输出到.NET中?
在编写控制台应用程序时,是否有方法创建第二个控制台以输出到.NET?任何给定进程都会附加一个控制台。总之,你不能。但是有一些方法可以“伪造”好吧,您可以启动一个新的cmd.exe进程,并使用stdio和stdout发送和接收数据C# 在编写控制台应用程序时,是否有方法创建第二个控制台以输出到.NET中?,c#,.net,console,C#,.net,Console,在编写控制台应用程序时,是否有方法创建第二个控制台以输出到.NET?任何给定进程都会附加一个控制台。总之,你不能。但是有一些方法可以“伪造”好吧,您可以启动一个新的cmd.exe进程,并使用stdio和stdout发送和接收数据 ProcessStartInfo psi = new ProcessStartInfo("cmd.exe") { RedirectStandardError = true, RedirectStandardInput = true, Redire
ProcessStartInfo psi = new ProcessStartInfo("cmd.exe")
{
RedirectStandardError = true,
RedirectStandardInput = true,
RedirectStandardOutput = true,
UseShellExecute = false
};
Process p = Process.Start(psi);
StreamWriter sw = p.StandardInput;
StreamReader sr = p.StandardOutput;
sw.WriteLine("Hello world!");
sr.Close();
有关的详细信息。以下命令将触发一个依赖于应用程序的控制台窗口数,并将控制台的数量和参数存储在字符串字典中,然后循环该字典以生成所需数量的衍生控制台应用程序。当然,如果只产生一个,那么你只需要过程的东西
//Start looping dic recs and firing console
foreach (DictionaryEntry tests in steps)
{
try
{
Process runCmd = new Process();
runCmd.StartInfo.FileName = CONSOLE_NAME;
runCmd.StartInfo.UseShellExecute = true;
runCmd.StartInfo.RedirectStandardOutput = false;
runCmd.StartInfo.Arguments = tests.Value.ToString();
if (cbShowConsole.Checked)
{
runCmd.StartInfo.CreateNoWindow = true;
runCmd.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
}
else
{
runCmd.StartInfo.CreateNoWindow = false;
runCmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
}
runCmd.Start();
}
catch (Exception ex)
{
string t1 = ex.Message;
}
}
注意,这是为了运行隐藏(CreateNoWindow)或可见。我也无法让它工作。进程之所以启动,是因为我可以在任务管理器中看到它,但无论我将ProcessStartInfo对象的
CreateNowInow
和WindowsStyle
属性设置为什么,控制台窗口都不会出现。也许它与Windows 7上的权限有关?控制台名称在哪里以及如何定义?不管您希望如何定义。它可以是一个字符串CONSOLE_NAME=**,也可以是上面示例中循环的步骤字典中的一个字符串。有关microsofts的定义,请参见