Есть ли способ создать вторую консоль для вывода в .NET при написании консольного приложения? - PullRequest
16 голосов
/ 30 марта 2009

Есть ли способ создать вторую консоль для вывода в .NET при написании консольного приложения?

Ответы [ 3 ]

18 голосов
/ 30 марта 2009

Хорошо, вы можете запустить новый процесс 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 .

3 голосов
/ 30 марта 2009

Следующая команда запускает зависящее от приложения количество окон консоли и сохраняет количество и параметры консоли в словаре строк, который затем зацикливается для создания необходимого количества порождаемых консольных приложений. Вам понадобятся только технологические материалы, если только они будут порождены.

//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) или видимого.

0 голосов
/ 30 марта 2009

Одна консоль присоединяется к любому данному процессу. Так что короче нельзя. Но есть способы «подделать это»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...