【发布时间】:2012-10-23 06:34:12
【问题描述】:
我有一个在本地机器上启动进程的功能:
public int StartProcess(string processName, string commandLineArgs = null)
{
Process process = new Process();
process.StartInfo.FileName = processName;
process.StartInfo.Arguments = commandLineArgs;
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.ErrorDialog = false;
process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
process.Start();
return process.Id;
}
它应该在不打开新窗口的情况下启动该过程。事实上,当我用 timeout.exe 测试它时,没有打开控制台窗口。但是当我使用 notepad.exe 或 calc.exe 对其进行测试时,它们的窗口仍然打开。
我在网上看到这种方法适用于其他人。我在 Windows 7 x64 上使用 .NET 4.0。
我做错了什么?
【问题讨论】:
-
它对其他人有用的来源是什么?
-
我认为没有一种通用的方法可以启动另一个可执行文件,然后防止该可执行文件决定打开自己的窗口。
-
我同意@Damien_The_Unbeliever。一般来说,如果一个进程决定打开一个窗口,它需要用户交互,所以它通常在没有窗口的情况下无法运行。与控制台应用程序不同,您可以在其中以编程方式读取和写入标准输入/输出。
-
stackoverflow.com/questions/3011209/…。 Chris Schmich 说它可以在他的机器上运行。 @AlvinWong
-
@Damien_The_Unbeliever 谢谢。我会坚持只隐藏控制台应用程序。
标签: c#