我正在尝试编写一个控制台应用程序。 它有它的原始控制台,我们将其命名为控制台A.而且我希望此应用程序通过C#执行以下操作:
- 在另一个线程中打开另一个控制台B,然后从Ainput并输出到B;
- 在A中键入一个命令,如dir,并在B中显示输出;
在做上述事情时(还没有完成X_X),我发现自己对控制台窗口是什么以及如何将其分配给控制台应用程序 ,特别是当我的控制台应用程序开始运行时的第一个控制台 。 有人可以点亮我吗?
控制台窗口在物理上是video内存中的内存区域吗? 或者是其他东西? 同一个进程中的不同线程可以为自己的I / O拥有不同的控制台吗?
非常感谢…
嗨,大家好,现在我正在使用一个控制台应用程序启动另一个控制台应用程序在一个新的进程 因此我可以同时输出2个控制台。
我现在的理解是,对于Windows操作系统,控制台是一个特殊的窗口,它是操作系统分配给应用程序的一个系统资源,不需要用户界面作为必要的用户界面。 Windows操作系统处理系统准备的控制台窗口与我们的无UI应用程序之间的连线。
在Windows中,控制台是一个文本的GUI窗口,您可以在运行“cmd.exe”时看到。 它允许你写文本,并从窗口读取文本,而没有任何其他的UI铬,如工具栏,菜单,标签等窗口。
要开始你想要加载Visual Studio,创建一个新的项目,并选择“控制台应用程序”。 将Visual Studio生成的样板代码更改为:
using System; using System.Text; namespace MyConsoleApp { class Program { static void Main(string[] args) { Console.Write("Hello, world!"); Console.ReadKey(); } } }
当你运行你的应用程序,一个控制台窗口将打开文本“你好,世界!” 它会保持打开,直到你按下一个键。 这是一个控制台应用程序。
控制台窗口在物理上是视频内存中的内存区域吗? 或者是其他东西?
这不是视频内存中的存储区域,而是“别的东西”。 维基百科的Win32控制台页面给出了一个相当强大的内外的描述。
控制台应用程序只有一个窗口。 它没有窗口管理功能,以产生儿童“游戏机”。
您可以启动其他控制台应用程序,但这些是独立的实体。
不,这是一个Windows GUI子系统。 在WinAPI中有与控制台一起使用的函数: http : //msdn.microsoft.com/en-us/library/ms682073%28VS.85%29.aspx
(OS)控制台是一个进程(包含一个或多个执行线程,它们全部共享相同的内存空间),并且该进程具有:
所以,如果你想创建另一个控制台(从.Net)并链接输入/输出,我知道你必须创建一个进程(例如执行“cmd.exe”)。
我不知道.Net的API用于过程操作,但是如果它像Java那样,你可以连接stdin,out和err,这样你就可以使用你创建的进程。
一个Windows应用程序可以有一个控制台,或者没有控制台,它不能有多个控制台。 请参阅AllocConsole的文档。 控制台基本上是“预Windows”时代的一个模拟,当时会有一个“控制台”,即连接到大型计算机的键盘和屏幕。 要做你想做的事,你可以用自己的控制台产生另一个进程,并在两者之间进行通信,或者创建一个看起来像控制台窗口的GUI应用程序。