Откройте два консольных окна из C # - PullRequest
4 голосов
/ 31 июля 2010
[DllImport("kernel32.dll")]
private static extern Int32 AllocConsole();

Я могу открыть cmd.exe с помощью этой команды.Но я могу открыть только одно консольное окно и написать в нем.Как я могу открыть еще один?Есть ли какое-нибудь чистое и быстрое решение для открытия двух окон консоли?

Ответы [ 3 ]

7 голосов
/ 13 января 2015

Таким образом, вы можете создать несколько консольных окон в одном приложении C #, но для этого вам понадобится несколько вещей. Process.start () и параметры командной строки.

Если вы сделаете это таким образом, ваше приложение сможет создать еще один экземпляр, но с разными параметрами командной строки, чтобы каждая часть выполняла разные действия.

Вот упрощенный пример того, как это сделать.

    namespace Proof_of_Concept_2
    {
        class Program
        {
            static void Main(string[] args)
            {
                if (args.Length!= 0)
                {
                    if (args[0] == "1")
                    {
                        AlternatePathOfExecution();
                    }
                    //add other options here and below              
                }
                else
                {
                    NormalPathOfExectution();
                }
            }


            private static void NormalPathOfExectution()
            {
                Console.WriteLine("Doing something here");
                //need one of these for each additional console window
                System.Diagnostics.Process.Start("Proof of Concept 2.exe", "1");
                Console.ReadLine();

            }
            private static void AlternatePathOfExecution()
            {
                Console.WriteLine("Write something different on other Console");
                Console.ReadLine();
            }

        }
    }

Вот скриншот того, как он работает. enter image description here

В заключение

Получить 2 окна консоли легко, заставить их общаться друг с другом - это отдельный вопрос сам по себе. Но я бы предложил именованные трубы. Соответствующее сообщение Stackoverflow

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

3 голосов
/ 01 августа 2010

Вы можете сделать

Process.Start("cmd.exe");

столько раз, сколько вы хотите. Это то, что вы имеете в виду?

0 голосов
/ 01 августа 2010

К сожалению, нет, извините - вы не можете иметь более одного окна консоли на приложение в Windows.

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