Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Tags:

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

like image 202
Matze Avatar asked Mar 30 '09 13:03

Matze


2 Answers

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.

like image 118
alexn Avatar answered Sep 22 '22 21:09

alexn


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.

like image 32
Matrim Avatar answered Sep 24 '22 21:09

Matrim