我现在尝试了几个方法来隐藏新进程的窗口(在这种情况下它只是用于测试的notepad.exe),但无论我尝试什么,它都无法工作。< / p>
我现在读过很多帖子都说同样的,为什么它不适合我呢?
我有一个控制台应用程序应该在不显示窗口的情况下启动其他进程。
我试图让我的控制台应用程序在没有窗口的情况下启动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的各种设置,我尝试将我的控制台应用程序配置为Windows应用程序,但是我的工作并不重要,子进程总是会打开一个窗口。
这是不允许来自控制台应用程序或这里有什么问题 - 任何人都可以对此有所了解吗?
我在Windows 7 x64上使用.NET 4.0
答案 0 :(得分:8)
根据我的经验,每当我启动“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:
窗口可以是可见的,也可以是隐藏的。系统通过不绘制来显示隐藏的窗口。如果窗口被隐藏,则会被有效禁用。隐藏窗口可以处理来自系统或其他窗口的消息,但它无法处理来自用户或显示输出的输入。通常,应用程序可以在自定义窗口外观时隐藏新窗口,然后使窗口样式正常。要使用ProcessWindowStyle.Hidden,ProcessStartInfo.UseShellExecute属性必须为 false 。
当我测试它时,我不必设置UseShellExecute = false
。