从C#打开两个控制台窗口

时间:2010-07-31 17:01:01

标签: c# cmd

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

我可以使用此命令打开cmd.exe。但我只能打开一个控制台窗口并写入其中。我怎么能打开另一个?打开两个控制台窗口是否有任何干净,快速的解决方案?

4 个答案:

答案 0 :(得分:7)

因此,你可以在一个单独的C#windows应用程序中执行多个控制台窗口,但要这样做,你必须要做一些事情。 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个控制台窗口很容易,让他们互相交谈是一个单独的问题。但我会建议命名管道。 Relevant Stackoverflow Post

你必须改变你的想法,因为一旦在不同进程上运行的2个控制台不会自动相互通信。无论你在其中一个上做什么计算,另一个完全没有意识到。

答案 1 :(得分:3)

你可以做到

Process.Start("cmd.exe");

根据您的意愿多次。这是你的意思吗?

答案 2 :(得分:0)

不幸的是,抱歉 - 在Windows中,每个应用程序不能有多个控制台窗口。

答案 3 :(得分:0)

  1. 运行控制台应用程序(第一个窗口)
  2. 转到bin>调试并打开YourApplication.exe文件(第二个窗口)