C# - 在后台使用控制台而不显示它

时间:2014-10-29 12:35:14

标签: c# .net background console hidden

我一直在考虑让Windows实现的cmd焕然一新,并从中创建一个WinForm(C#.net4.0或更高版本或最新的mono#distribution)。 现在,我打算做的是:

  • 仅显示表单,没有可见的控制台(即使在任务栏中)

  • 通过虚拟输入来告诉cmd该做什么

  • 捕获控制台输出并使用表单使用户进行交互

我想到了某种"返回"事情,就像一个DLL会做的,但我没有在一个项目中一起使用控制台和表格,所以我的问题是: 我如何不显示控制台窗口,而是将命令写入其中并使用WinForms应用程序接收输出?

提前致谢。

- 编辑 我应该补充一点,我的主要问题是键入捕获控制台输出并键入其中,因为它不可见,因此无法集中精力。

1 个答案:

答案 0 :(得分:2)

除了简单地抑制控制台窗口的外观之外,您可能会遇到困难。但就具体要求而言,并不难。

您将使用System.Diagnostics.Process类来启动该过程。在开始此过程之前,您需要查看ProcessStartInfo.CreateNoWindow属性true。请注意,您还需要将ProcessStartInfo.UseShellExecute设置为false,否则将忽略CreateNoWindow属性。

至于更广泛的问题:您可能需要使用“cmd.exe / k”启动控制台进程,以便在完成之前实例化一个新的命令行解释器进程,而不会退出。然后,您还需要使用Process类中的重定向功能从stdout和stderr读取,并写入stdin。