示例#1
0
 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;
     }
 }
示例#2
0
        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;
            }
        }
示例#3
0
        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);
        }
示例#4
0
        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;
        }
示例#5
0
    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 );
        }
    }