2013-06-23 87 views
0

我一直在搜索這幾個小時,但沒有得到正確的結果。我想要做的是在我的表格1上創建一個外部窗口。所以我的form1是最頂層的,但是當通過shellexecute打開默認瀏覽器時,它應該保持在最前面,直到關閉。VB6 - 向TopMost添加例外

我的代碼是:

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

當「google.com」被打開,默認的瀏覽器應該留在上面,直到關閉正如我前面提到的。

有沒有像樣的解決方案?如果是這樣,如果有人能告訴我該怎麼做,我將不勝感激。

回答

0

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

如果同時你的窗口,瀏覽器窗口是最重要的。那麼你可以把你的應用程序的激活事件代碼,以便:

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

爲得到你需要使用ShellExecuteEx而不是ShellExecute的瀏覽器手柄。這會給你一個hProcess。使用你EnumWindows(),看看哪些窗口有GetWindowThreadProcessID()。然後,將這些窗口存儲在列表中,然後遍歷它們,調用SetWindowPos api,以便它們落在窗體句柄的後面。

如果您的表單是MDI父級,則可以考慮將瀏覽器設置爲MDI子級,因爲任何窗口都可以成爲MDI子級。