我有一个使用直接Winapi用C ++编写的全屏应用程序。该应用程序包含一个嵌入式Web浏览器(使用CEF,但在这种情况下我认为并不重要)。由于单击链接并使用ShellExecute在系统默认浏览器中打开它们,因此我目前正在拦截所有弹出窗口。但是,在我们的许多测试系统上,浏览器窗口都显示在我的应用程序窗口后面,这是一个问题,因为我的窗口遮盖了任务栏,因此用户无法指示已显示新窗口。
我已经阅读了在此网站和其他网站上可以找到的所有内容,但找不到一个可行的解决方案:
因此,现在我正沿着枚举路径启动浏览器之前和之后的所有窗口,并试图找出哪个窗口是正确的。我正在设想可能发生的各种问题(例如,在现有浏览器上打开的选项卡)。如果有人对这个问题有任何解决方案,我将不胜感激!
编辑:我用于ShellExecuteEx的代码:
SHELLEXECUTEINFO sxi = { 0 };
sxi.cbSize = sizeof( sxi );
sxi.nShow = SW_NORMAL;
sxi.fMask = SEE_MASK_NOCLOSEPROCESS | SEE_MASK_NOASYNC | SEE_MASK_WAITFORINPUTIDLE;
sxi.lpVerb = _T( "open" );
sxi.lpFile = url;
if( ShellExecuteEx( &sxi ) )