Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在编写控制台应用程序时,是否有方法创建第二个控制台以输出到.NET中?_C#_.net_Console - Fatal编程技术网

C# 在编写控制台应用程序时,是否有方法创建第二个控制台以输出到.NET中?

C# 在编写控制台应用程序时,是否有方法创建第二个控制台以输出到.NET中?,c#,.net,console,C#,.net,Console,在编写控制台应用程序时,是否有方法创建第二个控制台以输出到.NET?任何给定进程都会附加一个控制台。总之,你不能。但是有一些方法可以“伪造”好吧,您可以启动一个新的cmd.exe进程,并使用stdio和stdout发送和接收数据 ProcessStartInfo psi = new ProcessStartInfo("cmd.exe") { RedirectStandardError = true, RedirectStandardInput = true, Redire

在编写控制台应用程序时,是否有方法创建第二个控制台以输出到.NET?

任何给定进程都会附加一个控制台。总之,你不能。但是有一些方法可以“伪造”

好吧,您可以启动一个新的cmd.exe进程,并使用stdio和stdout发送和接收数据

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的定义,请参见