예제 #1
0
        private void Browser_AuthenticationPrompt(WebBrowser2 sender, WebBrowser2.AuthenticationPromptEventArgs e)
        {
            try
            {
                Program.AssertOnEventThread();

                log.Debug("Prompting for authentication...");

                CompleteClearSecret(lastBrowserState);
                CompleteGetSecret(lastBrowserState);
                BrowserState.BrowserCredentials creds = lastBrowserState.Credentials;
                if (creds != null && creds.Valid)
                {
                    e.Username = creds.Username;
                    e.Password = creds.Password;
                    e.Success  = true;

                    log.Debug("Prompt for authentication successful.");
                }
                else
                {
                    e.Success = false;
                    log.Debug("Prompt for authentication cancelled / failed.");
                }
            }
            catch (Exception exn)
            {
                log.Error("Prompt for authentication failed", exn);
                e.Success = false;
            }
        }
예제 #2
0
파일: FillBase.cs 프로젝트: qwdingyu/C-
        private void InnerInstallScript(HtmlDocument document)
        {
            WebBrowser2.InstallJQuery(document.DomDocument as IHTMLDocument);
            string code = this.GetJSCode();

            WebBrowser2.AttachScript(document.DomDocument as IHTMLDocument, code);
        }
예제 #3
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;
 }
예제 #4
0
        private void wb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            WebBrowser2  wbObj     = sender as WebBrowser2;
            HtmlDocument _document = wbObj.Document;
            string       strTitle  = "";

            HtmlElement           enlst = _document.GetElementById("emblog_list");
            HtmlElementCollection divs  = enlst.GetElementsByTagName("div");
            HtmlElement           emLi;

            foreach (HtmlElement em in divs)
            {
                if (em.GetAttribute("className") == "list")
                {
                    emLi = em.GetElementsByTagName("li")[0];

                    HtmlElementCollection links = emLi.GetElementsByTagName("a");
                    strUrl = links[0].GetAttribute("href");

                    wb2.Navigate(strUrl);


                    break;
                }
            }
        }
예제 #5
0
파일: BHFiller.cs 프로젝트: qwdingyu/C-
 public BHFiller(WebBrowser2 browser, Uri currentUri, BHUrlParameter urlParameter)
     : base(browser, currentUri)
 {
     _parameters   = new List <KeyValuePair <FillParameterKey, object> >();
     _urlParameter = urlParameter;
     formIndexes   = new Dictionary <string, int>();
 }
예제 #6
0
        private void wb2_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            this.Text = "100";
            WebBrowser2  wbObj     = sender as WebBrowser2;
            HtmlDocument _document = wbObj.Document;
            string       strTitle  = "";

            HtmlElementCollection divs   = _document.Body.GetElementsByTagName("div");
            HtmlElement           emBody = _document.GetElementById("articleBody");

            foreach (HtmlElement em in divs)
            {
                if (em.GetAttribute("className") == "articleTitle")
                {
                    strTitle = em.InnerText;

                    break;
                }
            }

            txtBody.Text = strTitle + "\n" + emBody.InnerText;


            TimerCallback timerDelegate = new TimerCallback(reload);

            System.Threading.Timer timer = new System.Threading.Timer(timerDelegate);
            timer.Change(1000, 0);
        }
예제 #7
0
 public COCFillManager(WebBrowser2 browser, string dataFile, string ruleFilePath)
     : base(browser, dataFile, ruleFilePath)
 {
     base.FillType = "COC";
     base.Version  = Properties.Resources.FillRule;
     _asyncObject  = new FillAsyncHandler();
 }
예제 #8
0
        private FillManagerBase GetFillManager(string dataFile, WebBrowser2 browser)
        {
            FillManagerBase manager = null;

            if (ribbon.SelectedPage == ghsite)
            {
                manager = new GHFillManager(browser, dataFile);
            }
            else if (ribbon.SelectedPage == fdlsite)
            {
                manager = new FDLFillManager(browser, dataFile);
            }
            else if (ribbon.SelectedPage == bhsite)
            {
                manager = new BHFillManager(browser, dataFile);
            }
            else if (ribbon.SelectedPage == xnysite)
            {
                manager = new XNYFillManager(browser, dataFile);
            }
            else if (ribbon.SelectedPage == cocsite)
            {
                manager = new COCFillManager(browser, dataFile);
            }
            else if (ribbon.SelectedPage == pzhsite)
            {
                manager = new PZHFillManager(browser, dataFile);
            }
            else if (ribbon.SelectedPage == cccsite)
            {
                if (cccProcess == null)
                {
                    this.Start3CProcess();
                    if (cccProcess == null)
                    {
                        return(null);
                    }
                    while (cccProcess.MainWindowHandle == IntPtr.Zero)
                    {
                        Application.DoEvents();
                    }
                }
                manager = new CCCFillManager((uint)cccProcess.Id, dataFile);
            }
            // 为填报器指定数据提供程序。
            if (manager != null)
            {
                string entripise = FileHelper.GetEntName();
                manager.DataProvider = DataProviders.DataProviderFactory.CreateProvider(entripise, GetSelectedPageType());

                manager.DataProvider.DataSourceFile = dataFile;
                if (manager.DataProvider.AllowAlternately)
                {
                    bool result = manager.DataProvider.ShowWindow();
                    return(result ? manager : null);
                }
            }
            return(manager);
        }
예제 #9
0
 /// <summary>
 /// 监听WebBrowser的Navigating、DocumentCompleted、NewWindow3、Disposed事件。
 /// </summary>
 /// <param name="browser"></param>
 public void AttachWebBrowser(WebBrowser2 browser)
 {
     _openedBrowser.Add(browser);
     browser.Navigating        += Browser_Navigating;
     browser.DocumentCompleted += Browser_DocumentCompleted;
     browser.NewWindow3        += Browser_NewWindow3;
     browser.Disposed          += Browser_Disposed;
 }
예제 #10
0
 public COCFillManager(WebBrowser2 browser, string dataFile)
     : base(browser, dataFile, FileHelper.GetFillVersionByName(WebBrowserUtils.Properties.Resources.FillRule))
 {
     base.FillType = "COC";
     base.Version  = Properties.Resources.FillRule;
     _asyncObject  = new FillAsyncHandler();
     _fillThread   = new System.Threading.Thread(InnerBeginFill);
 }
예제 #11
0
파일: BHFiller.cs 프로젝트: qwdingyu/C-
        private void FillTableValue(Hashtable data)
        {
            if (data == null)
            {
                base.Browser.Invoke((Action)(() =>
                {
                    WebBrowser2.InvokeScript(base.Document.DomDocument as IHTMLDocument, "goBack");
                }));
                return;
            }
            int           count     = 0;
            List <string> valueList = null;
            List <KeyValuePair <FillParameterKey, object> > fillList = new List <KeyValuePair <FillParameterKey, object> >();
            int fillIndex = 0, rowIndex = 0;

            foreach (DictionaryEntry entry in data)
            {
                rowIndex = 0;
                DataTable table = entry.Value as DataTable;
                bool      canAdd;
                while (table.Rows.Count > rowIndex)
                {
                    formIndexes.Clear();
                    valueList = GetValueList(table, fillList, out fillIndex, ref rowIndex, out canAdd);
                    for (int i = 0; i < fillIndex; i++)
                    {
                        if (_parameters[i].Key.Type == Matcher.TYPE_FORM)
                        {
                            FillParameter parameter = _parameters[i].Value as FillParameter;
                            if (parameter != null)
                            {
                                string key = parameter.FrameId;
                                if (string.IsNullOrEmpty(key))
                                {
                                    key = "@";
                                }
                                if (formIndexes.ContainsKey(key))
                                {
                                    formIndexes[key] = formIndexes[key] + 1;
                                }
                                else
                                {
                                    formIndexes[key] = 0;
                                }
                            }
                        }
                    }
                    FillListElement(fillList, valueList, canAdd);
                    count = Math.Max(count, fillIndex);
                    fillList.Clear();
                }
            }

            for (int index = count; index < _parameters.Count; index++)
            {
                this.FillElement(_parameters[index].Key, _parameters[index].Value, null);
            }
        }
예제 #12
0
 protected override void OnBrowserNavigating(WebBrowser2 browser, WebBrowserNavigatingEventArgs e)
 {
     base.OnBrowserNavigating(browser, e);
     if (e.Url.AbsolutePath == "/cocComplete!saveCocComplete.action")
     {
         base.EndFill();
         _asyncObject.Resume();
     }
 }
예제 #13
0
파일: FillBase.cs 프로젝트: qwdingyu/C-
 protected FillBase(WebBrowser2 browser, Uri currentUri)
 {
     _browser     = browser;
     _currentUri  = currentUri;
     _asyncObject = new FillAsyncHandler();
     _fillThread  = new Thread(FillWorker);
     _state       = Fillers.FillState.New;
     _browser.ScriptErrorsSuppressed = true;
 }
예제 #14
0
 public ScriptingObject(WebBrowser2 Browser, IXenObject XenObject)
 {
     browser    = Browser;
     connection = XenObject.Connection;
     if (connection != null)
     {
         connection.ConnectionResult += connection_ConnectionResult;
     }
     SetObject(XenObject);
 }
예제 #15
0
 /// <summary>
 /// 停止监听指定WebBrowser的事件。
 /// </summary>
 /// <param name="browser"></param>
 public void DetachWebBrowser(WebBrowser2 browser)
 {
     if (browser != null)
     {
         browser.Navigating        -= Browser_Navigating;
         browser.DocumentCompleted -= Browser_DocumentCompleted;
         browser.NewWindow3        -= Browser_NewWindow3;
         browser.Disposed          -= Browser_Disposed;
     }
 }
예제 #16
0
 public ScriptingObject(WebBrowser2 Browser, IXenObject XenObject)
 {
     browser    = Browser;
     connection = XenObject.Connection;
     if (connection != null)
     {
         connection.ConnectionResult += new EventHandler <ConnectionResultEventArgs>(connection_ConnectionResult);
     }
     SetObject(XenObject);
 }
예제 #17
0
        private void Browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            WebBrowser2 browser = sender as WebBrowser2;
            // 查询当前Url是否已有填报线程。
            FillBase findFill = GetFiller(e.Url);

            if (findFill == null)
            {
                if (CanFill(e.Url))
                { //若当前Url可填报且线程尚未创建,则创建一个新线程。
                    FillBase fill = CreateFillInner(e.Url, browser);
                    if (fill != null)
                    {
                        _currentFill = fill;
                    }
                }
                else
                {
                    OnDocumentCompleted(browser, e);
                    return;
                }
            }
            else
            {
                // 若当前填报线程已结束,则创建一个新的线程执行填报。
                if (findFill.FillState == FillState.End || findFill.FillState == FillState.Exception || findFill.FillState == FillState.Abort)
                {
                    findFill.Dispose();
                    findFill = CreateFillInner(e.Url, browser);
                }
                _currentFill = findFill;
            }
            if (browser.IsBusy == false && _currentFill != null && _currentFill.Browser == browser && !browser.IsDisposed)
            {
                _currentFill.FillIndexes = _fillIndexes;
                if (_currentFill.FillState == FillState.Suspended || _currentFill.FillState == FillState.Waiting ||
                    _currentFill.FillState == FillState.Running)
                {
                    if (CanFill(e.Url))
                    {
                        _currentFill.UpdateDocument(e.Url);
                    }
                    else
                    {
                        _currentFill.UpdateDocument();
                    }
                    _currentFill.Resume();
                }
                else if (_currentFill.FillState == FillState.New)
                {
                    _currentFill.BeginFill();
                }
            }
            OnDocumentCompleted(browser, e);
        }
예제 #18
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="browser">主页面浏览器。</param>
 /// <param name="dataFile">存储数据的文件位置。</param>
 /// <param name="ruleFilePath">规则文件的存储路径。</param>
 internal WebFillManager(WebBrowser2 browser, string dataFile, string ruleFilePath)
     : base(dataFile, ruleFilePath)
 {
     _fillTable     = new Hashtable();
     _uris          = new Hashtable();
     _browser       = browser;
     _fillIndexes   = new List <FillBase>();
     _openedBrowser = new List <WebBrowser2>();
     _records       = new List <FillRecord>();
     _records.Add(new FillRecord(ElementType.Text, RecordType.Success));
     _records.Add(new FillRecord(ElementType.Select, RecordType.Success));
     _records.Add(new FillRecord(ElementType.Radio, RecordType.Success));
     _records.Add(new FillRecord(ElementType.CheckBox, RecordType.Success));
     _records.Add(new FillRecord(ElementType.File, RecordType.Success));
 }
예제 #19
0
        private void CreateBrowser()
        {
            Browser      = new WebBrowser2();
            Browser.Dock = DockStyle.Fill;
            Browser.IsWebBrowserContextMenuEnabled = ContextEnabled;
            Browser.DocumentCompleted    += Browser_DocumentCompleted;
            Browser.Navigating           += Browser_Navigating;
            Browser.Navigated            += Browser_Navigated;
            Browser.NavigateError        += Browser_NavigateError;
            Browser.WindowClosed         += Browser_WindowClosed;
            Browser.PreviewKeyDown       += Browser_PreviewKeyDown;
            Browser.AuthenticationPrompt += Browser_AuthenticationPrompt;

            // Navigate to about:blank to work around http://support.microsoft.com/kb/320153.
            Browser.Navigate("about:blank");
        }
예제 #20
0
        public PrivateDetector(WebBrowser2 browser, string fileName, IList attrStringList)
            : base(browser)
        {
            string tempPath = System.IO.Path.GetTempPath();

            _fileName = fileName;
            _fullName = string.Format("{0}\\{1}", tempPath, fileName);
            FileInfo info = new FileInfo(_fullName);

            if (info.Directory.Exists == false)
            {
                info.Directory.Create();
            }
            _excelColumnHeader = attrStringList;
            _writer            = new Office.Excel.ForwardExcelWriter(_fullName);
            _writer.Open();
        }
예제 #21
0
        public new void SetUp()
        {
            _wb = new WebBrowser2();

            MW(() => _wb.Handle);

            _testUris.Clear();

            for (int i = 0; i < 2; i++)
            {
                string file = Path.GetTempFileName();
                File.Move(file, file + ".html");
                file += ".html";
                File.WriteAllText(file, "<html><body>hello</body></html>");
                _testUris.Add(new Uri("file://" + file));
            }
        }
예제 #22
0
        private void WebBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            WebBrowser2    browser = sender as WebBrowser2;
            MainRibbonForm form    = this.FindForm() as MainRibbonForm;

            if (form != null)
            {
                if (e.Url.ToString() == Constants.APPLY_TEMPORARY_SEQUENCE_NUMBER_PAGE)
                {
                    form.simpleButton1.Visible = true;
                }
                else
                {
                    form.simpleButton1.Visible = false;
                }
            }
        }
예제 #23
0
        protected override void Dispose(bool disposing)
        {
            base.Dispose(disposing);

            BrowserStates.Clear();

            if (Browser != null)
            {
                Browser.Dispose();
                Browser = null;
            }
            if (_tabPage != null)
            {
                _tabPage.Dispose();
                _tabPage = null;
            }
        }
예제 #24
0
        private void WebBrowser_Navigated(object sender, System.Windows.Forms.WebBrowserNavigatedEventArgs e)
        {
            WebBrowser2 browser = sender as WebBrowser2;

            browser.ObjectForScripting = new WebPageCloseHandler(browser.Parent as TabPageWithWebBrowser);
            HtmlDocument doc = FindDocument(browser.Document, e.Url);

            if (doc != null)
            {
                WebBrowser2.AttachScript(doc.DomDocument as IHTMLDocument, AttachScript, HtmlElementInsertionOrientation.AfterBegin);
                if (opener != null)
                {
                    browser.Document.Cookie = opener.document.cookie;
                    browser.Document.InvokeScript("setOpener", new object[] { opener });
                }
            }
            this.Text = string.IsNullOrEmpty(browser.Document.Title) ? "未命名" : browser.Document.Title;
        }
예제 #25
0
        private void wb2_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            WebBrowser2  wbObj     = sender as WebBrowser2;
            HtmlDocument _document = wbObj.Document;
            string       strTitle  = "";

            HtmlElementCollection divs   = _document.Body.GetElementsByTagName("div");
            HtmlElement           emBody = _document.GetElementById("articleBody");

            foreach (HtmlElement em in divs)
            {
                if (em.GetAttribute("className") == "articleTitle")
                {
                    strTitle = em.InnerText;

                    break;
                }
            }

            txtBody.Text = strTitle + "\n" + emBody.InnerText;
        }
예제 #26
0
        protected virtual void OnDocumentCompleted(WebBrowser2 browser, WebBrowserDocumentCompletedEventArgs e)
        {
            string uri = e.Url.AbsolutePath;
            Uri    url = null;

            try
            {
                url = new Uri(this.JumpWhenPage);
                if (url.AbsolutePath == uri)
                {
                    browser.Navigate(this.StartPageUri);
                }
            }
            catch
            {
                this.EndFill();
                WebFillManager.ShowMessageBox(string.Format("填报类型{0}的StartFillPageUri的url地址不正确!", base.FillType), "错误",
                                              MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
        }
예제 #27
0
        private void Browser_Disposed(object sender, EventArgs e)
        {
            WebBrowser2 browser = sender as WebBrowser2;

            if (browser != null)
            {
                DetachWebBrowser(browser); // 浏览器被关闭时停止监听其事件,并继续主WebBrowser中的填报线程。
            }
            _currentFill = null;
            _openedBrowser.Remove(browser);
            HtmlDocument doc = FindFillDocument(_openedBrowser[_openedBrowser.Count - 1].Document);

            if (doc != null)
            {
                FillBase findFill = GetFiller(doc.Url);
                if (findFill != null)
                {
                    _currentFill = findFill;
                }
            }
            this.OnBrowserDisposed(browser);
        }
예제 #28
0
        protected FillBase CreateFillInner(Uri url, WebBrowser2 browser)
        {
            string uri = url.AbsolutePath;

            if (string.IsNullOrEmpty(uri))
            {
                return(null);
            }
            UrlParameter parameter = _uris[uri] as UrlParameter;
            string       key       = parameter == null ? null : parameter.LabelName;

            if (key == null)
            {
                return(null);
            }
            FillBase fill = CreateFill(url, browser);

            if (fill != null)
            {
                if (_fillTable.Contains(key))
                {
                    _fillTable[key] = fill;
                }
                else
                {
                    _fillTable.Add(key, fill);
                }
                fill.DataTable         = _data;
                fill.RulePath          = RuleFilePath;
                fill.FillVersion       = this.Version;
                fill.FillRecords       = this._records;
                fill.DataProvider      = this.DataProvider;
                fill.FillStateChanged += new EventHandler(OnFillStateChanged);
            }
            return(fill);
        }
예제 #29
0
        private void CrearPestaña()
        {
            Estado.Text = "New Tab";

            TabPage newtab = new TabPage("Nueva Pestaña ");
            ContarPestaña++; //variable que lleva el control de la cantidad de pestaña creada
            ListaPestaña.Add(newtab);
            Navegador1.SelectedTab = newtab; //seleccionamos la pestaña
            Navegador1.TabPages.Add(newtab); //cargamos la pestaña en el control

            //Se crea objeto browser
            WebBrowser2 wb = new WebBrowser2();
            newtab.Controls.Add(wb);
            wb.Dock = DockStyle.Fill;
            wb.ScriptErrorsSuppressed = false;
            wb.NavigateError += new WebBrowserNavigateErrorEventHandler(wb_NavigateError);//Control de errores
            wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(wb_completa);// ebento que se ejequta al terminar de cargar la pagina

            wb.Navigate(Home);
        }
예제 #30
0
 public BrowserState(List <Uri> uris, IXenObject obj, WebBrowser2 browser)
 {
     Uris = new List <Uri>(uris);
     Obj  = obj;
     ObjectForScripting = obj == null ? null : new ScriptingObject(browser, obj);
 }
        private void btnHelp_Click(object sender, RoutedEventArgs e)
        {

            WebBrowser2 wb = new WebBrowser2(new Uri(System.IO.Path.GetFullPath(@".\MySci User Documentation.htm#_Universal_Law_of")));
            UndockedModule ud = new UndockedModule(wb, "Help", 0);
            ud.Show();
        }
예제 #32
0
 public PZHFiller(WebBrowser2 browser, Uri currentUri, UrlParameter urlParameter)
     : base(browser, currentUri)
 {
     _parameters   = new List <KeyValuePair <FillParameterKey, object> >();
     _urlParameter = urlParameter;
 }
예제 #33
0
 public WebBrowser2EventHelper(WebBrowser2 parent)
 {
     this.parent = parent;
 }