【问题标题】:VB6 - Add exception to TopMostVB6 - 向 TopMost 添加例外
【发布时间】:2013-06-23 14:20:48
【问题描述】:

我已经搜索了几个小时,但没有正确的结果。我想要做的是在我的form1上制作一个最顶层的外部窗口。所以我的form1是最上面的,但是当通过shellexecute打开默认浏览器时,它应该保持在最上面,直到关闭。

我的代码是:

   Dim r As Long
   r = ShellExecute(0, "open", "http://www.google.com", 0, 0, 1)

当“google.com”打开时,默认浏览器应该保持在顶部,直到我之前提到的关闭。

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

【问题讨论】:

    标签: exception vb6 topmost default-browser


    【解决方案1】:
    【解决方案2】:

    看看 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
    

    【讨论】:

      【解决方案3】:

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

      SetWindowPos(browserHandle, Me.hwnd, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE);
      

      要获取浏览器句柄,您需要使用ShellExecuteEx 而不是 ShellExecute。这会给你一个hProcess。使用EnumWindows() 并查看哪些窗口具有GetWindowThreadProcessID()。然后将这些窗口存储在一个列表中,并通过调用 SetWindowPos api 对它们进行迭代,以便它们位于表单句柄的后面。

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

      【讨论】:

        猜你喜欢
        • 2016-12-19
        • 2023-03-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-31
        • 2013-08-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多