我一直在考虑让Windows实现的cmd焕然一新,并从中创建一个WinForm(C#.net4.0或更高版本或最新的mono#distribution)。 现在,我打算做的是:
仅显示表单,没有可见的控制台(即使在任务栏中)
通过虚拟输入来告诉cmd该做什么
捕获控制台输出并使用表单使用户进行交互
我想到了某种"返回"事情,就像一个DLL会做的,但我没有在一个项目中一起使用控制台和表格,所以我的问题是: 我如何不显示控制台窗口,而是将命令写入其中并使用WinForms应用程序接收输出?
提前致谢。
- 编辑 我应该补充一点,我的主要问题是键入捕获控制台输出并键入其中,因为它不可见,因此无法集中精力。
答案 0 :(得分:2)
除了简单地抑制控制台窗口的外观之外,您可能会遇到困难。但就具体要求而言,并不难。
您将使用System.Diagnostics.Process
类来启动该过程。在开始此过程之前,您需要查看ProcessStartInfo.CreateNoWindow
属性true
。请注意,您还需要将ProcessStartInfo.UseShellExecute
设置为false
,否则将忽略CreateNoWindow
属性。
至于更广泛的问题:您可能需要使用“cmd.exe / k”启动控制台进程,以便在完成之前实例化一个新的命令行解释器进程,而不会退出。然后,您还需要使用Process类中的重定向功能从stdout和stderr读取,并写入stdin。