ExtendedWebBrowser 用法
找了很久关于VB.NET WEBBROWSER 新链接在原窗口打开的方法,找了很久没解决 ,发现不少人用 ExtendedWebBrowser
但本人VB.NET新手,不太懂得用 ExtendedWebBrowser,以下是ExtendedWebBrowser的源码,请教如何使用
ExtendedWebBrowser:
Imports System.RuntimeImports System.ComponentModelPublic Class ExtendedWebBrowser Inherits WebBrowser Private cookie As AxHost.ConnectionPointCookie Private Shadows events As WebBrowserExtendedEvents Private Const WM_PARENTNOTIFY As Integer = &H210 Private Const WM_DESTROY As Integer = 2 Public Event WindowClosing() Public Event NewWindowWithTaget As EventHandler(Of WebBrowserExtendedNavigatingEventArgs) Protected Overrides Sub WndProc(ByRef m As Message) Select Case m.Msg Case WM_PARENTNOTIFY If (Not DesignMode) AndAlso (m.WParam = WM_DESTROY) Then RaiseEvent WindowClosing() DefWndProc(m) Case Else MyBase.WndProc(m) End Select End Sub Protected Overloads Overrides Sub CreateSink() MyBase.CreateSink() events = New WebBrowserExtendedEvents(Me) cookie = New AxHost.ConnectionPointCookie(Me.ActiveXInstance, events, GetType(DWebBrowserEvents2)) End Sub Protected Overloads Overrides Sub DetachSink() If cookie IsNot Nothing Then cookie.Disconnect() cookie = Nothing End If MyBase.DetachSink() End Sub Protected Sub OnNewWindow3(ByVal url As String, ByVal e As WebBrowserExtendedNavigatingEventArgs) RaiseEvent NewWindowWithTaget(Me, e) End Sub Private Class WebBrowserExtendedEvents Inherits System.Runtime.InteropServices.StandardOleMarshalObject Implements DWebBrowserEvents2 Private _Browser As ExtendedWebBrowser Public Sub New(ByVal browser As ExtendedWebBrowser) _Browser = browser End Sub Public Sub NewWindow3(ByVal pDisp As Object, ByRef cancel As Boolean, ByRef flags As Object, ByRef hostURL As Object, ByRef URL As Object) _ Implements DWebBrowserEvents2.NewWindow3 Dim args As New WebBrowserExtendedNavigatingEventArgs(URL) args.Cancel = cancel _Browser.OnNewWindow3(URL, args) cancel = args.Cancel End Sub End Class <InteropServices.ComImport(), InteropServices.Guid("34A715A0-6587-11D0-924A-0020AFC7AC4D"), _ InteropServices.InterfaceTypeAttribute(InteropServices.ComInterfaceType.InterfaceIsIDispatch), _ InteropServices.TypeLibType(InteropServices.TypeLibTypeFlags.FHidden)> _ Public Interface DWebBrowserEvents2 <InteropServices.DispId(273)> _ Sub NewWindow3(ByVal pDisp As Object, ByRef cancel As Boolean, ByRef flags As Object, ByRef hostURL As Object, ByRef URL As Object) End InterfaceEnd ClassPublic Class WebBrowserExtendedNavigatingEventArgs Inherits CancelEventArgs Private _Url As String Public Sub New(ByVal url As String) _Url = url End Sub Public ReadOnly Property Url() As String Get Return _Url End Get End PropertyEnd Class'调用时使用下面的事件 /////楼主注解:以下代码是放在带WEBBROWSER控件 FORM窗口?Private Sub WebBrowser1_NewWindow(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles WebBrowser1.NewWindow Dim NewUrl As String NewUrl = CType(sender, Windows.Forms.WebBrowser).Document.ActiveElement.GetAttribute("href") ''NewUrl = CType(sender, Windows.Forms.WebBrowser).StatusText RaiseEvent NewExplorer(NewUrl)'打开新的一页或窗体 e.Cancel = True End Sub Private Sub WebBrowser1_NewWindowWithTaget(ByVal sender As Object, ByVal e As WebBrowserExtendedNavigatingEventArgs) Handles WebBrowser1.NewWindowWithTaget RaiseEvent NewExplorer(e.Url)'打开新的一页或窗体 e.Cancel = True End Sub