void wbEvents2_NewWindow2(ref object ppDisp, ref bool Cancel) { Window1 wnd = new Window1(); wnd.Show(); wnd.myWebBrowser.Navigate(new Uri("about:blank")); //wnd.myWebBrowser.Navigating += new System.Windows.Navigation.NavigatingCancelEventHandler(myWebBrowser_Navigating); Guid SID_SWebBrowserApp = new Guid("0002DF05-0000-0000-C000-000000000046"); IServiceProvider serviceProvider = (IServiceProvider)wnd.myWebBrowser.Document; Guid serviceGuid = SID_SWebBrowserApp; Guid iid = typeof(SHDocVw.IWebBrowser2).GUID; SHDocVw.IWebBrowser2 myWebBrowser2 = (SHDocVw.IWebBrowser2)serviceProvider.QueryService(ref serviceGuid, ref iid); ppDisp = myWebBrowser2.Application; SHDocVw.DWebBrowserEvents2_Event wbEvents2 = (SHDocVw.DWebBrowserEvents2_Event)myWebBrowser2; 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); }
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); }
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 ); } }