[DllImport("kernel32.dll")]
private static extern Int32 AllocConsole();
我可以使用这个命令打开cmd.exe。但我只能打开一个控制台窗口并在其中编写命令。如何打开另一个控制台窗口?有没有一种干净快速的方法来打开两个控制台窗口?
[DllImport("kernel32.dll")]
private static extern Int32 AllocConsole();
我可以使用这个命令打开cmd.exe。但我只能打开一个控制台窗口并在其中编写命令。如何打开另一个控制台窗口?有没有一种干净快速的方法来打开两个控制台窗口?
所以你可以在一个单独的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();
}
}
}
这是它工作的截图。
总之,
获得2个控制台窗口很容易,让它们相互通信是一个独立的问题。但是我建议使用命名管道。相关的Stackoverflow帖子
您必须改变思维方式,因为一旦两个控制台运行在不同的进程上,它们不会自动相互通信。无论您在其中一个上进行什么计算,另一个都完全不知情。
TextBox
创建自己的控制台的替代方案? - Mikael Dúi Bolinder您可以做到
Process.Start("cmd.exe");
很抱歉,您不能在Windows中的一个应用程序中拥有多个控制台窗口。