【问题标题】:Open two console windows from C#从 C# 打开两个控制台窗口
【发布时间】:2010-07-31 17:01:00
【问题描述】:
[DllImport("kernel32.dll")]
private static extern Int32 AllocConsole();

我可以用这个命令打开 cmd.exe。但我只能打开一个控制台窗口并在其中写入。我怎样才能打开另一个?打开两个控制台窗口有什么干净快速的解决方案吗?

【问题讨论】:

  • AllocConsole 不会启动 cmd.exe 进程实例 - 它只是创建一个控制台窗口并将其附加到您的进程。
  • 我可以创建两个控制台窗口吗?
  • 不,你不能。 Windows 不允许这样做。
  • 请编辑这篇文章以表明您指的是控制台窗口,而不是 cmd.exe。

标签: c# cmd


【解决方案1】:

因此,您可以在一个 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();
            }

        }
    }

这是它工作的屏幕截图。

总之,

获得 2 个控制台窗口很容易,让它们相互交谈本身就是一个单独的问题。但我建议命名管道。 Relevant Stackoverflow Post

您必须改变您的想法,因为 2 个控制台曾经在不同的进程上运行,不会自动相互通信。无论您对其中一个进行什么计算,另一个完全不知道。

【讨论】:

    【解决方案2】:

    你可以的

    Process.Start("cmd.exe");
    

    任意次数。这是你的意思吗?

    【讨论】:

      【解决方案3】:

      很遗憾,抱歉,Windows 中的每个应用程序不能有多个控制台窗口。

      【讨论】:

      【解决方案4】:
      1. 运行控制台应用程序(第一个窗口)
      2. 进入 bin > 调试并打开 YourApplication.exe 文件(第二个窗口)

      【讨论】:

        猜你喜欢
        • 2010-12-26
        • 2013-06-30
        • 2014-04-20
        • 2013-03-18
        • 2012-06-07
        • 2017-02-26
        • 1970-01-01
        • 1970-01-01
        • 2012-08-20
        相关资源
        最近更新 更多