0

ShellExecuteEx(&ShExecInfo)用于启动一个.exe,当.exe从我的应用程序启动时,Windows 焦点在 1 秒左右的很短的时间内转移到先前打开的应用程序(如 Windows 探索),然后返回到.exe. 我希望我的重点应该放在 exe 上,而不是在短时间内进入任何应用程序。

参考代码:

SHELLEXECUTEINFO ShExecInfo;
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
ShExecInfo.hwnd = mainWndHWnd;
ShExecInfo.lpVerb = L"open";
ShExecInfo.lpFile = L"abc.exe";
ShExecInfo.lpParameters = buffer;
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_SHOWNA;
ShExecInfo.hInstApp = NULL;
ShellExecuteEx(&ShExecInfo);
4

1 回答 1

0

如果我理解正确,你打电话给

ShellExecuteEx(&ShExecInfo);

从您的应用程序之一并立即退出它。那正确吗?

在这种情况下,您正在创建的进程可能尚未启动/初始化,并且 Windows必须将焦点设置到某个窗口,因此它会转到先前聚焦的窗口。

您可能希望在第一个应用程序中等待第二个应用程序启动,例如,使用 WaitForInputIdle() 函数。

于 2015-12-28T16:43:04.503 回答