我正在使用 CreateProcess() 并将启动标志设置为 STARTF_USESHOWWINDOW 和 SW_HIDE 在后台启动应用程序并隐藏其窗口。我这样做是为了运行预定的维护任务,我不想被 Windows 打扰。
在大多数情况下,窗口是隐藏的,但在某些情况下,程序的窗口会在您面前弹出(例如 Google 的 Chrome - 我开始使用不同的应用程序进行测试,以查看这是否是曾经的问题,但不是......)。
这种情况在 Windows XP 中发生得较少,但在 Vista 中发生得很多。
有没有我丢失的标志?有没有其他方法可以创建一个隐藏其窗口的进程?
谢谢!
我的示例代码是:
char *ProgramName
STARTUPINFO StartupInfoF;
PROCESS_INFORMATION ProcessInfoF;
memset(&StartupInfoF, 0, sizeof(StartupInfoF));
memset(&ProcessInfoF, 0, sizeof(ProcessInfoF));
StartupInfoF.cb = sizeof(StartupInfoF);
StartupInfoF.wShowWindow = SW_HIDE;
StartupInfoF.dwFlags = STARTF_USESHOWWINDOW;
if (CreateProcess(ProgramName,
"",
0,
0,
FALSE,
DETACHED_PROCESS,
0,
0,
&StartupInfoF,
&ProcessInfoF) == FALSE)
{
// error
}
else
{
// OK
}