Is there a way to create a second console to output to in .NET when writing a console application?
views:
339answers:
3
+3
Q:
Is there a way to create a second console to output to in .NET when writing a console application?
A:
A single console is attached to any given process. So in short you can not. But there are ways to "fake it"
Ólafur Waage
2009-03-30 13:52:27
+8
A:
Well, you could start a new cmd.exe process and use stdio and stdout to send and recieve data. I'm coming up with an example.
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.
alexn
2009-03-30 14:12:53
+1
A:
Following fires of an application dependant number of console windows and stores the amount and parameters for the console inside a String Dictionary that is then loped 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.
Matrim
2009-03-30 14:32:03