2014-10-29 37 views
0

我一直在考虑在Windows实现的cmd中给出一个新的外观,并使其成为WinForm(C#.net4.0或更高版本或最新的mono#分发版) 。 现在,我打算做的事情是:C# - 在不显示它的背景下使用控制台

  • 只显示几乎被输入到它告诉CMD做什么形式,没有控制台可见的(即使是在任务栏)

  • 捕捉控制台输出,并使用形式,使用户交互

我认为某种“回归”的事情,就像一个DLL会做的,但我没有在一个项目中一起使用控制台和窗体,所以我的问题是: 如何不显示控制台窗口,但将命令写入它的行并使用WinForms应用程序接收输出?

在此先感谢。

- EDIT 我应该补充一点,我的主要问题是键入捕获控制台输出,并且在它不可见并且因此不可聚焦时键入。

+0

您可以通过**静音模式**在后台运行批处理文件(控制台窗口不会显示)。检查[this](http://stackoverflow.com/questions/411247/running-a-cmd-or-bat-in-silent-mode)问题 – Gowtham 2014-10-29 14:22:37

回答

2

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

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

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