我正在使用以下代码创建一个隐藏其主窗口的应用程序:
STARTUPINFO siStartupInfo;
PROCESS_INFORMATION piProcessInfo;
memset(&siStartupInfo, 0, sizeof(siStartupInfo));
memset(&piProcessInfo, 0, sizeof(piProcessInfo));
siStartupInfo.cb = sizeof(siStartupInfo);
siStartupInfo.dwFlags = STARTF_USESHOWWINDOW | STARTF_FORCEOFFFEEDBACK | STARTF_USESTDHANDLES;
siStartupInfo.wShowWindow = SW_HIDE;
if(CreateProcess(MyApplication, "", 0, 0, FALSE, 0, 0, 0, &siStartupInfo, &piProcessInfo) == FALSE)
{
// blah
return 0;
}
一切正常,除了我的主应用程序(调用此代码的那个)窗口在我打开新程序时失去焦点。我尝试降低新进程的优先级,但焦点问题仍然存在。
有没有办法避免这种情况?此外,有没有办法在不使用 CreateProcess(或任何调用 CreateProcess 的 API,如 ShellExecute)的情况下创建另一个进程?
我的猜测是我的应用程序正在失去焦点,因为它被赋予了新进程,即使它被隐藏了。
对于那些好奇的人,肯定会问通常的“你为什么要这样做”,我的回答是因为我有一个不能作为服务的看门狗进程,它会在我打开我的主应用程序时启动。使满意?
谢谢您的帮助。代码将不胜感激。杰斯。