Is there a way to create a second console to output to in .NET when writing a console application?

后端 未结 3 995
礼貌的吻别
礼貌的吻别 2020-12-02 21:10

Is there a way to create a second console to output to in .NET when writing a console application?

相关标签:
3条回答
  • 2020-12-02 21:43

    The following fires off an application-dependent number of console windows and stores the amount and parameters for the console inside a String Dictionary that is then looped to generate the required amount of spawned console apps. You would only need the process stuff if only spawning one of course.

    //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;
        }
    }
    

    Note this is intended either to run hidden (CreateNoWindow) or visible.

    0 讨论(0)
  • 2020-12-02 21:48

    A single console is attached to any given process. So in short you can not. But there are ways to "fake it"

    0 讨论(0)
  • 2020-12-02 21:54

    Well, you could start a new cmd.exe process and use stdio and stdout to send and recieve data.

    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();
    

    More info on MSDN.

    0 讨论(0)
提交回复
热议问题