我正在尝试通过我的应用程序打开浏览器,但我不希望它在前台运行并从我的应用程序中窃取焦点。
代码:
case WM_COMMAND:
{
SHELLEXECUTEINFO ShExecInfo;
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = NULL;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = L"open";
ShExecInfo.lpFile = L"http://www.microsoft.com";
ShExecInfo.lpParameters = NULL;
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_HIDE;
ShExecInfo.hInstApp = NULL;
ShellExecuteEx(&ShExecInfo);
SetForegroundWindow(hwnd);
}
return 0;
在我的应用程序中,有一个按钮发送命令消息以执行打开代码,但我的应用程序转到后台,浏览器到达前台。
如何解决这个问题?
答案 0 :(得分:0)
我建议您使用CreateProcess()
启动浏览器,而在初始化的STARTUPINFO
结构中,使用STARTF_USESHOWWINDOW
和dwFlags
中的wShowWindow
,一定要包含SW_SHOWNOACTIVATE
标志。这应该允许进程启动但不会成为活动窗口。