在NewWindow事件中,假定您的第一個Wb控件被命名爲WB1,並且您想要重定向到WB2,則在WB1 NW事件中執行以下操作。
Processed = True ' This cancels the current request.
WB2.Navigate URL ' This redirects it to the second WB2 control.
否則,如果你想使用NW2(NewWindow2)事件而不是NewWindow(NW)事件,在WB1控制的NW2事件做到這一點。
Set ppDisp = WB2.object ' Just swaps the objects around to redirect, don't need to issue a cancel.
此外,您可以通過BeforeNavigate2(WB1)來做到這一點。但代碼略有不同。
Cancel = True ' Cancel Request.
WB2.Navigate2 URL ' Reissue it to WB2.
現在,只要你控制它重定向到,你可以很容易地得到新窗口的URL,使用WB2.LocationURL或Wb2.Document.URL如果我沒有記錯的話。如果你想改變渲染引擎爲IE9(即使IE9安裝在你的計算機上,WB控件也會使用IE7渲染引擎來兼容)......網上有文章和關於SO的文章(包括一些),它闡明瞭如何改變註冊表以確保WB控件使用的渲染引擎與安裝的版本(IE9)相同,否則它將始終使用IE7。而且,如果您在計算機上安裝了IE4,5或6,則它將始終將IE4用於渲染引擎。我認爲他們在3-4版本更改後更新了渲染版本。我假設在版本10中,WB控制渲染版本也將是版本10。
讓我知道你是否需要更多的幫助,我很想知道你是怎麼相處的,如果這有助於回答你的問題。我所有的例子都在VB6中,但你可以很容易地轉換它們。
乾杯。
謝謝你的答案,但我不明白這一點......我不能讓newwindow名稱或任何事件。網頁打開它,我無法控制它。正如我前面提到的,我對我的瀏覽器控件進行了必要的註冊表更改,將其標識爲IE9,但新窗口似乎標識爲IE7,儘管我不確定這一點 - 我只是認爲它是這樣做的,因爲它不起作用!所以問題是如何訪問我沒有創建的新窗口... – pzogr
@pzogr註冊表的變化使得我們在IE9模式下運行WB控制並不困難,我們將在稍後討論。首先,應該有一個WebBrowser1_NewWindow或WebBrowser1_NewWindow2事件,您可以從事件列表中訪問此事件,首先請確保您可以進入該事件並查看從Visual Studio IDE/Designer自動打印的事件。一旦你完成了這個,讓我知道,我們會從那裏繼續。當然,一旦你發現這一點,隨時檢查變量或將我給你的代碼放在那裏,同時確保你的第二個WebBrowser控件名稱爲WB2,讓我知道 –
首先,我已經說過註冊表的變化到位。我知道在那裏做什麼,我已經做了。關於NewWindow:有一個NewWindow事件,但正如我所說,你只能取消事件(e.cancel = true)。除此之外,您無法訪問NewWindow。 – pzogr