ExtendedWebBrowser 用法,该怎么解决
ExtendedWebBrowser 用法
找了很久关于VB.NET WEBBROWSER 新链接在原窗口打开的方法,找了很久没解决 ,发现不少人用 ExtendedWebBrowser
但本人VB.NET新手,不太懂得用 ExtendedWebBrowser,以下是ExtendedWebBrowser的源码,请教如何使用
ExtendedWebBrowser:
------解决方案--------------------
找了很久关于VB.NET WEBBROWSER 新链接在原窗口打开的方法,找了很久没解决 ,发现不少人用 ExtendedWebBrowser
但本人VB.NET新手,不太懂得用 ExtendedWebBrowser,以下是ExtendedWebBrowser的源码,请教如何使用
ExtendedWebBrowser:
- VB.NET code
Imports System.Runtime Imports System.ComponentModel Public 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 Interface End Class Public 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 Property End 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
------解决方案--------------------