Exception VB6-将异常添加到最顶层

Exception VB6-将异常添加到最顶层,exception,vb6,topmost,default-browser,Exception,Vb6,Topmost,Default Browser,我已经搜索了几个小时,但是没有找到合适的结果。我想做的是,在我的form1上创建一个指向最顶端的外部窗口。所以我的form1是最上面的,但当通过shellexecute打开默认浏览器时,它应该保持在顶部,直到关闭 我的代码是: Dim r As Long r = ShellExecute(0, "open", "http://www.google.com", 0, 0, 1) 当“google.com”打开时,默认浏览器应该保持在顶部,直到我前面提到的关闭 有没有合适的解决方案?如

我已经搜索了几个小时,但是没有找到合适的结果。我想做的是,在我的form1上创建一个指向最顶端的外部窗口。所以我的form1是最上面的,但当通过shellexecute打开默认浏览器时,它应该保持在顶部,直到关闭

我的代码是:

   Dim r As Long
   r = ShellExecute(0, "open", "http://www.google.com", 0, 0, 1)
当“google.com”打开时,默认浏览器应该保持在顶部,直到我前面提到的关闭


有没有合适的解决方案?如果是这样,如果有人能告诉我怎么做,我将不胜感激。

使用WaitForSingleObject winapi函数等待浏览器窗口关闭。检查以下链接以获取相同的信息:


看看SetWindowPos API

Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long

如果您的窗口和浏览器窗口都位于最顶部。然后,您可以将代码放入应用程序的激活事件中,以便:

SetWindowPos(browserHandle, Me.hwnd, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE);
要获取浏览器句柄,需要使用
ShellExecuteEx
而不是ShellExecute。这将为您提供一个hProcess。使用它,您可以
EnumWindows()
并查看哪些窗口具有该
GetWindowThreadProcessID()
。然后将这些窗口存储在一个列表中,并调用setWindowPosAPI对它们进行迭代,以便它们位于窗体句柄后面

如果您的窗体是MDI父级,则可以考虑将浏览器设为MDI子,因为任何窗口都可以成为MDI子。