Ejemplo n.º 1
0
 protected override void OnFillerStateChanged(FillBase fill)
 {
     if (fill.FillState == FillState.Running)
     {
         if (_detector == null)
         {
             _detector = new PrivateDetector(fill.Browser, FileHelper.GetFillRuleFile(this.Version, this.FillType, this.Standard, this.CarType), attrList);
         }
         else
         {
             _detector.Browser = fill.Browser;
         }
         string uri = fill.CurrentUrl.AbsolutePath;
         if (_detected.ContainsKey(uri) == false)
         {
             fill.Reset();
             _detected.Add(uri, "");
             UrlParameter parameter = base.Uris[uri] as UrlParameter;
             _detector.Detect(parameter.LabelName);
             fill.Resume();
         }
     }
     else if (fill.FillState == FillState.Exception)
     {
         WebFillManager.ShowMessageBox(fill.Exception.Message, "错误", System.Windows.Forms.MessageBoxButtons.OK,
                                       System.Windows.Forms.MessageBoxIcon.Error);
     }
     else if (fill.CurrentUrl.OriginalString == base.EndPageUri)
     {
         OnFinished(EventArgs.Empty);
     }
 }
Ejemplo n.º 2
0
 /// <summary>
 /// 清理所有正在使用的资源。
 /// </summary>
 /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
 protected override void Dispose(bool disposing)
 {
     if (webBrowser1 != null)
     {
         webBrowser1.Navigated         -= WebBrowser_Navigated;
         webBrowser1.NewWindow3        -= WebBrowser_NewWindow3;
         webBrowser1.DocumentCompleted -= WebBrowser_DocumentCompleted;
         if (isModalDialog)
         {
             this.DialogResult = WebBrowser2.InvokeScript(webBrowser1.Document.DomDocument as IHTMLDocument, "getDialogResult");
         }
     }
     if (disposing)
     {
         if (webBrowser1 != null)
         {
             webBrowser1.Dispose();
             if (_fillManager != null)
             {
                 _fillManager.DetachWebBrowser(webBrowser1);
             }
         }
         if (components != null)
         {
             components.Dispose();
         }
     }
     base.Dispose(disposing);
     _fillManager = null;
     webBrowser1  = null;
 }
Ejemplo n.º 3
0
        public void Compare()
        {
            if (_thread != null && _thread.IsAlive)
            {
                _thread.Abort();
            }
            string type     = _root.Header;
            string dir      = string.Format("{0}\\Temp", version);
            string dataFile = string.Format("{0}\\{1}\\{2}", version, type, FileHelper.GetTextValue("DefaultDetectDataFile"));

            if (Directory.Exists(dir) == false)
            {
                Directory.CreateDirectory(dir);
            }
            if (type == "国环")
            {
                fillManager = new GHComparerFillManager(_webBrowser, dataFile);
            }
            else if (type == "北环")
            {
                fillManager = new BHComparerFillManager(_webBrowser, dataFile);
            }
            if (fillManager != null)
            {
                fillManager.Finished += fillManager_Finished;
                _thread = new System.Threading.Thread(CompareWorker);
                _thread.Start(dir);
            }
            else
            {
                throw new ArgumentException("未定义的元素感知页面!");
            }
        }
Ejemplo n.º 4
0
        private void SetText(IntPtr handle)
        {
            WebFillManager fillManager = _fillManager as WebFillManager;

            if (fillManager != null)
            {
                GetTextHandle(handle);
                if (textHandle != IntPtr.Zero)
                {
                    WebBrowserUtils.HtmlUtils.Fillers.ApiSetter.SetText(textHandle, fillManager.CurrentValue);
                }
                if (btnHandle != IntPtr.Zero)
                {
                    WebBrowserUtils.HtmlUtils.Fillers.ApiSetter.ClickButton(btnHandle, this.Handle, null, null);
                }
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 拦截弹出窗口。
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void WebBrowser_NewWindow3(object sender, WebBrowserNavigatingEventArgs e)
        {
            e.Cancel = true;
            WebBrowser  browser = sender as WebBrowser;
            HtmlElement element = browser.Document.ActiveElement;

            while (element != null)
            {
                if (element.TagName == "FRAME" || element.TagName == "IFRAME")
                {
                    if (string.IsNullOrEmpty(element.Id))
                    {
                        foreach (HtmlWindow wnd in element.Document.Window.Frames)
                        {
                            if (wnd.WindowFrameElement == element)
                            {
                                element = wnd.Document.ActiveElement;
                                break;
                            }
                        }
                    }
                    else
                    {
                        element = element.Document.Window.Frames[element.Id].Document.ActiveElement;
                    }
                }
                else
                {
                    break;
                }
            }
            HtmlDocument          opener         = element == null ? null : element.Document;
            TabPageWithWebBrowser page           = new TabPageWithWebBrowser(opener.Window.DomWindow as IHTMLWindow2);
            WebFillManager        webFillManager = _fillManager as WebFillManager;

            if (webFillManager != null)
            {
                webFillManager.AttachWebBrowser(page.WebBrowser1);
            }
            page.FillManager = webFillManager;
            XtraTabControl tabControl = this.Parent as XtraTabControl;

            tabControl.TabPages.Add(page);
            tabControl.SelectedTabPage = page; //显示该页
        }
Ejemplo n.º 6
0
 public void StopCompare()
 {
     if (this.fillManager != null)
     {
         try
         {
             fillManager.EndFill();
             fillManager.Finished -= fillManager_Finished;
             if (_thread != null)
             {
                 _thread.Abort();
             }
         }
         catch (System.Threading.ThreadAbortException)
         {
         }
         finally
         {
             _thread     = null;
             fillManager = null;
         }
     }
 }
Ejemplo n.º 7
0
 private void CompareWorker(object state)
 {
     try
     {
         TreeModel       result = new TreeModel();
         string          type   = _root.Header;
         RuleCompareNode root   = new RuleCompareNode()
         {
             Header = _root.Header, IsExpanded = true
         };
         result.AddChild(root);
         RuleCompareNode resultItem;
         string          path = state as string;
         if (type == "国环")
         {
             _asyncHandler = new FillAsyncHandler();
             List <KeyValuePair <string, string> > appendixes = FileHelper.GetAppendixes(type);
             foreach (RuleCompareNode item in _root.Children)
             {
                 if (item.IsChecked == false)
                 {
                     continue;
                 }
                 // 排放标准
                 resultItem = new RuleCompareNode()
                 {
                     Header = item.Header
                 };
                 root.AddChild(resultItem);
                 foreach (var appendix in appendixes)
                 {
                     RuleCompareNode appendixNode = new RuleCompareNode()
                     {
                         Header = appendix.Key
                     };
                     resultItem.AddChild(appendixNode);
                     CompareInner(item, appendixNode, path, type, appendix);
                 }
             }
         }
         else if (type == "北环")
         {
             _asyncHandler = new FillAsyncHandler();
             foreach (RuleCompareNode item in _root.Children)
             {
                 if (item.IsChecked == false)
                 {
                     continue;
                 }
                 // 排放标准
                 resultItem = new RuleCompareNode()
                 {
                     Header = item.Header
                 };
                 root.AddChild(resultItem);
                 CompareInner(item, resultItem, path, type, null);
             }
         }
         this.Result = result;
         this.fillManager.EndFill();
         OnFinished(EventArgs.Empty);
         this.fillManager = null;
     }
     catch (Exception ex)
     {
         WebFillManager.ShowMessageBox(ex.Message, "错误", System.Windows.Forms.MessageBoxButtons.OK,
                                       System.Windows.Forms.MessageBoxIcon.Error);
     }
     finally
     {
         if (this.fillManager != null)
         {
             this.fillManager.EndFill();
             this.fillManager = null;
         }
     }
 }