Есть ли способ создать вторую консоль для вывода в .NET при написании консольного приложения?
Есть ли способ создать вторую консоль для вывода в .NET при написании консольного приложения?
Ответы
Ответ 1
Ну, вы можете запустить новый процесс 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();
Дополнительная информация о MSDN.
Ответ 2
Следующее исключает зависящее от приложения количество окон консоли и сохраняет количество и параметры для консоли внутри Строкового словаря, который затем зацикливается для генерации необходимого количества порожденных консольных приложений. Вам понадобится только материал процесса, если только нерестится, конечно.
//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) или видимого.
Ответ 3
Отдельная консоль привязана к любому процессу. Короче говоря, вы не можете. Но есть способы "подделать".