Пример #1
0
        public AdvertisingControl()
        {
            InitializeComponent();

            DWebBrowserEvents2_Event browser = webBrowser.ActiveXInstance as DWebBrowserEvents2_Event;

            //Workaround which allows to minimize showing time of wait cursor when WebBrowser navigating.
            updateCursor = () => Dispatcher.Invoke(Mouse.UpdateCursor);

            if (browser != null)
            {
                browser.NewWindow3    += webBrowser_NewWindow3;
                browser.NavigateError += browser_NavigateError;

                browser.StatusTextChange += browser_StatusTextChange;
                browser.TitleChange      += browser_TitleChange;

                IEClients.ForEach(client => client.ProxyChanged += () =>
                {
                    if (!isAnimationPlayed)
                    {
                        timer.Interval = 1;
                        timer.Stop();
                        timer.Start();
                    }
                });

                timer.Elapsed += (sender, e) =>
                {
                    updateNumber++;

                    timer.Interval = RefreshInterval.TotalMilliseconds;
                    if (!IsIEUsingProxy)
                    {
                        webBrowser.Navigate(string.Format(adsUri, Context.Get <IVersionProvider>().Version.ToString(), updateNumber));

                        if (!isAnimationPlayed)
                        {
                            isAnimationPlayed = true;
                            Action action = () => Dispatcher.BeginInvoke(new Action(() => PlayAnimation("ExpandControl")));
                            action.RunWithDelay(loadAdvertisingTimeout);
                        }
                    }
                };

                timer.Start();
            }
        }
Пример #2
0
 public int SetSite(object pUnkSite)
 {
     if (pUnkSite != null)
     {
         _pUnkSite = (IWebBrowser2) pUnkSite;
         _webBrowser2Events = (DWebBrowserEvents2_Event) pUnkSite;
         SetSiteStartup();
         _webBrowser2Events.BeforeNavigate2 += _webBrowser2Events_BeforeNavigate2;
     }
     else
     {
         SetSiteShutdown();
         _webBrowser2Events.BeforeNavigate2 -= _webBrowser2Events_BeforeNavigate2;
         _pUnkSite = null;
         _webBrowser2Events = null;
     }
     return 0;
 }
Пример #3
0
        public int SetSite([In, MarshalAs(UnmanagedType.IUnknown)] object pUnkSite)
        {
            if (pUnkSite != null)
            {
                m_pUnkSite          = pUnkSite;
                m_webBrowser2       = (IWebBrowser2)pUnkSite;
                m_webBrowser2Events = (DWebBrowserEvents2_Event)pUnkSite;
                m_webBrowser2Events.DocumentComplete += OnDocumentComplete;
                m_webBrowser2Events.BeforeNavigate2  += OnBeforeNavigate;
            }
            else
            {
                m_webBrowser2Events.DocumentComplete -= OnDocumentComplete;
                m_webBrowser2Events.BeforeNavigate2  -= OnBeforeNavigate;
                m_pUnkSite = null;
            }

            return(0);
        }
        /// <summary>
        /// Initialize the hook on webBrowser and register document events
        /// </summary>
        /// <param name="site">site</param>
        /// <returns></returns>
        public int SetSite(object site)
        {
            this.site = site;

            if (this.site != null)
            {
                Orange.ConfortPlus.IEExtension.Interfaces.IServiceProvider serviceProv = (Orange.ConfortPlus.IEExtension.Interfaces.IServiceProvider) this.site;
                Guid   guidIWebBrowserApp = Marshal.GenerateGuidForType(typeof(IWebBrowserApp));
                Guid   guidIWebBrowser2   = Marshal.GenerateGuidForType(typeof(IWebBrowser2));
                IntPtr intPtr;
                serviceProv.QueryService(ref guidIWebBrowserApp, ref guidIWebBrowser2, out intPtr);

                this.webBrowser = (IWebBrowser2)Marshal.GetObjectForIUnknown(intPtr);

                DWebBrowserEvents2_Event browserEvent = (DWebBrowserEvents2_Event)this.webBrowser;

                browserEvent.DocumentComplete += this.OnDocumentComplete;

                browserEvent.BeforeNavigate2  += this.OnBeforeNavigate2;
                browserEvent.DownloadBegin    += this.OnDownloadBegin;
                browserEvent.DownloadComplete += this.OnDownloadComplete;
            }
            else
            {
                if (this.webBrowser != null)
                {
                    DWebBrowserEvents2_Event browserEvent = (DWebBrowserEvents2_Event)this.webBrowser;

                    browserEvent.DocumentComplete -= this.OnDocumentComplete;

                    browserEvent.BeforeNavigate2  -= this.OnBeforeNavigate2;
                    browserEvent.DownloadBegin    -= this.OnDownloadBegin;
                    browserEvent.DownloadComplete -= this.OnDownloadComplete;

                    this.webBrowser = null;
                }
            }

            return(0);
        }
Пример #5
0
 protected void Release()
 {
     if (browserEvents != null)
     {
         Marshal.ReleaseComObject(browserEvents);
         browserEvents = null;
     }
     if (browser != null)
     {
         Marshal.ReleaseComObject(browser);
         browser = null;
     }
 }
Пример #6
0
        /// <summary> 
        /// IE调用此方法,并传递指向容器Site的IUnknown指针,由此我们可以获得IWebBrowser2接口 
        /// 并挂载DWebBrowserEvents2事件 
        /// </summary> 
        /// <param name="site">容器Site的IUnknown指针</param>
        /// 
        public void SetSite(object site)
        {
            // TODO:  添加 BrowserMonitor.SetSite 实现
            #region 取得 IWebBrowser2 引用
            if (browser != null)
                Release();
            if (site == null)
                return;
            browser = site as IWebBrowser2;
            #endregion

            #region 检查名称,当且仅当为IEXPLORE.EXE时加载
            string hostName = browser.FullName;
            if (!(hostName.ToUpper().EndsWith("IEXPLORE.EXE")))
            {
                Release();
                return;
            }
            #endregion
            #region 挂载浏览器事件
            browserEvents = browser as DWebBrowserEvents2_Event;
            if (browserEvents != null)
            {
                browserEvents.DocumentComplete += new DWebBrowserEvents2_DocumentCompleteEventHandler(this.OnDocumentComplete);
            }
            else
            {
                Release();
                return;
            }
            #endregion
        }