Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从C打开两个控制台窗口#_C#_Cmd - Fatal编程技术网

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

C# 从C打开两个控制台窗口#,c#,cmd,C#,Cmd,我可以用这个命令打开cmd.exe。但我只能打开一个控制台窗口并在其中写入内容。我怎样才能打开另一个?打开两个控制台窗口是否有干净快速的解决方案?您可以这样做 [DllImport("kernel32.dll")] private static extern Int32 AllocConsole(); 你想要多少次都行。这就是你的意思吗?不幸的是,对不起,在Windows中,每个应用程序不能有多个控制台窗口。因此,你可以在一个C#Windows应用程序中创建多个控制台窗口,但要做到这一点,你需

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

您可以这样做

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

你想要多少次都行。这就是你的意思吗?

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

因此,你可以在一个C#Windows应用程序中创建多个控制台窗口,但要做到这一点,你需要做一些事情。Process.start()和命令行参数

如果您这样做,您可以让您的应用程序创建另一个自身实例,但使用不同的命令行参数让每个部分执行不同的操作

下面是一个简单的例子,说明如何做到这一点

Process.Start("cmd.exe");
下面是它工作的屏幕截图。

总之,

获得两个控制台窗口很容易,让它们彼此对话本身就是一个独立的问题。但我建议用命名管道

你必须改变你的想法,因为这两个控制台一旦在不同的进程上运行,就不会自动相互通信。不管你对其中一个做什么计算,另一个完全不知道

  • 运行控制台应用程序(第一个窗口)
  • 进入bin>debug并打开YourApplication.exe文件(第二个窗口)

  • AllocConsole不会启动cmd.exe进程实例-它只是创建一个控制台窗口并将其附加到您的进程。然后我可以创建两个控制台窗口吗?不,您不能。Windows不会允许它。请编辑这个帖子来表明你指的是控制台窗口,而不是CMD.exe。难道你不能只写C++中的一个应用程序,然后把它导入到C?看到这个帖子了吗
        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();
                }
    
            }
        }