private void WebBrowser_LoadCompleted(object sender, NavigationEventArgs e) { if (!isInitialized) { IServiceProvider serviceProvider = (IServiceProvider)WebBrowser.Document; Guid serviceGuid = new Guid("0002DF05-0000-0000-C000-000000000046"); Guid iid = typeof(SHDocVw.IWebBrowser2).GUID; SHDocVw.DWebBrowserEvents_Event wbEvents = (SHDocVw.DWebBrowserEvents_Event)serviceProvider.QueryService(ref serviceGuid, ref iid); wbEvents.NewWindow += OnNewWindow; isInitialized = true; } }
void AttachEvent(SHDocVw.DWebBrowserEvents_Event webEvents, string handler) { switch (handler) { case WebView.DocumentTitleChangedEvent: webEvents.TitleChange += WebEvents_TitleChange; break; case WebView.OpenNewWindowEvent: webEvents.NewWindow += WebEvents_NewWindow; break; } }
private void button1_Click(object sender, RoutedEventArgs e) { Guid SID_SWebBrowserApp = new Guid("0002DF05-0000-0000-C000-000000000046"); IServiceProvider serviceProvider = (IServiceProvider)myWebBrowser.Document; Guid serviceGuid = SID_SWebBrowserApp; Guid iid = typeof(SHDocVw.IWebBrowser2).GUID; SHDocVw.IWebBrowser2 myWebBrowser2 = (SHDocVw.IWebBrowser2)serviceProvider.QueryService(ref serviceGuid, ref iid); SHDocVw.DWebBrowserEvents_Event wbEvents = (SHDocVw.DWebBrowserEvents_Event)myWebBrowser2; SHDocVw.DWebBrowserEvents2_Event wbEvents2 = (SHDocVw.DWebBrowserEvents2_Event)myWebBrowser2; wbEvents.NewWindow += new SHDocVw.DWebBrowserEvents_NewWindowEventHandler(wbEvents_NewWindow); wbEvents2.NewWindow2 += new SHDocVw.DWebBrowserEvents2_NewWindow2EventHandler(wbEvents2_NewWindow2); wbEvents2.NavigateError += new SHDocVw.DWebBrowserEvents2_NavigateErrorEventHandler(wbEvents2_NavigateError); wbEvents2.RedirectXDomainBlocked += new SHDocVw.DWebBrowserEvents2_RedirectXDomainBlockedEventHandler(wbEvents2_RedirectXDomainBlocked); wbEvents2.ThirdPartyUrlBlocked += new SHDocVw.DWebBrowserEvents2_ThirdPartyUrlBlockedEventHandler(wbEvents2_ThirdPartyUrlBlocked); }
void HookDocumentEvents(string newEvent = null) { var webEvents = WebEvents; if (oldEventObject != null) { foreach (var handler in delayedEvents) { RemoveEvent(webEvents, handler); } } if (newEvent != null) { delayedEvents.Add(newEvent); } if (webEvents != null) { foreach (var handler in delayedEvents) { AttachEvent(webEvents, handler); } } oldEventObject = webEvents; }
public void HookForEvents( HookEventType[] delegateTypes ) { _delegateTypes = delegateTypes; try { Guid ieServiceIdentifier = new Guid( "0002DF05-0000-0000-C000-000000000046" ); Guid ieInterfaceIdentifier = typeof( SHDocVw.IWebBrowser2 ).GUID; IServiceProvider serviceProvider = (IServiceProvider) _wpfWebBrowser.Document; _webBrowser2 = (SHDocVw.IWebBrowser2) serviceProvider.QueryService( ref ieServiceIdentifier, ref ieInterfaceIdentifier ); _webBrowserEvents = (SHDocVw.DWebBrowserEvents_Event) _webBrowser2; _webBrowserEvents2 = (SHDocVw.DWebBrowserEvents2_Event) _webBrowser2; } catch( Exception ex ) { throw new WpfWebBrowserExtenderComBindException( String.Empty, ex ); } Dictionary<HookEventType,HookForEventDelegate> hookForEvent = new Dictionary<HookEventType, HookForEventDelegate>(); hookForEvent.Add( HookEventType.DownloadBegin , HookForEventDownloadBegin ); hookForEvent.Add( HookEventType.ProgressChange , HookForEventPageLoadProgressUpdate ); hookForEvent.Add( HookEventType.DownloadComplete , HookForEventDownloadComplete ); hookForEvent.Add( HookEventType.NavigateError , HookForEventNavigateError ); hookForEvent.Add( HookEventType.NavigateComplete , HookForEventNavigateComplete2 ); hookForEvent.Add( HookEventType.NewWindow , HookForEventNewWindow ); foreach( HookEventType dt in _delegateTypes ) { hookForEvent[ dt ]( _webBrowserEvents, _webBrowserEvents2 ); } }