开发者

Open two console windows from C#

[DllImport("kernel32.dll")]
private static extern Int32 AllocConsole();

I can open cmd.exe with this command. But i can open only one console window and write in it. How can i open another one? Is any clean and 开发者_高级运维fast solution for opening two console windows?


So you can do multiple console windows within one single C# windows app, but to do so you would have to have a few things. Process.start(), and command-line parameters.

If you do it this way you can have your app create another instance of itself, but with different command line parameters to have each part do different things.

Here is a simplistic example of how to do it.

    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();
            }

        }
    }

Here is a screenshot of it working.

Open two console windows from C#

In conclusion,

Getting 2 console windows is easy, getting them to talk to each other is a separate question in and of itself. But I would suggest named pipes. Relevant Stackoverflow Post

You have to change your thinking because the 2 Consoles once run on different processes don't automatically talk to each other. Whatever calculation you are doing on one of them, the other one is completely unaware.


You can do

Process.Start("cmd.exe");

as many times as you would like. Is this what you mean?


Unfortunately not, sorry — you cannot have more than one console window per application in Windows.


  1. Run the Console app (first window)
  2. Got to bin > debug and open the YourApplication.exe file (second window)
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜