隐藏进程窗口,为什么它不工作?

我已经尝试了几件事情来隐藏新进程的窗口(在这种情况下,它只是notepad.exe进行testing),但不pipe我尝试什么,它都不会工作。

我现在看过很多post都是这么说的,那么为什么它不适合我呢?

我有一个控制台应用程序,应该启动其他进程,而不显示其窗口。

我试图让我的控制台应用程序启动notepad.exe没有窗口,但它不会工作。

ProcessStartInfo info = new ProcessStartInfo("path to notepad.exe"); info.RedirectStandardOutput = true; info.RedirectStandardError = true; info.CreateNoWindow = true; info.UseShellExecute = false; Process proc = Process.Start(info); 

我也尝试使用各种设置info.WindowStyle,我试图configuration我的控制台应用程序是一个Windows应用程序,但它并不是真的,我做什么,subprocess总是打开一个窗口。

这是不允许从一个控制台的应用程序或这里有什么问题 – 任何人都可以在这个可能吗?

我在Windows 7 x64上使用.NET 4.0

Solutions Collecting From Web of "隐藏进程窗口,为什么它不工作?"

根据我的经验,当我启动“cmd.exe”时,以下工作。

 info.CreateNoWindow = true; info.UseShellExecute = false; 

它似乎没有与“notepad.exe”工作。 它与其他应用程序也失败,如“excel.exe”和“winword.exe”。

然而,这个工作:

 ProcessStartInfo info = new ProcessStartInfo("notepad.exe"); info.WindowStyle = ProcessWindowStyle.Hidden; Process proc = Process.Start(info); 

来自MSDN :

窗口可以是可见的或隐藏的。 系统通过不绘制显示一个隐藏的窗口。 如果一个窗口被隐藏,它被有效地禁用。 一个隐藏的窗口可以处理来自系统或其他窗口的消息,但不能处理来自用户的输入或显示输出。 通常,应用程序可能会在定制窗口外观时隐藏新窗口,然后使窗口的样式为Normal 。 要使用ProcessWindowStyle.Hidden, ProcessStartInfo.UseShellExecute属性必须为false

当我测试它时,我不必设置UseShellExecute = false