Ejemplo n.º 1
0
        internal override void OnWebHostProgressChanged(object sender, Mono.WebBrowser.ProgressChangedEventArgs e)
        {
            readyState = WebBrowserReadyState.Interactive;
            WebBrowserProgressChangedEventArgs n = new WebBrowserProgressChangedEventArgs(e.Progress, e.MaxProgress);

            OnProgressChanged(n);
        }
Ejemplo n.º 2
0
        private void WaitTillLoad()
        {
            WebBrowserReadyState loadStatus = default(WebBrowserReadyState);
            int waittime = 100000;
            int counter  = 0;

            while (true)
            {
                loadStatus = webBrowser1.ReadyState;
                Application.DoEvents();

                if ((counter > waittime) || (loadStatus == WebBrowserReadyState.Uninitialized) || (loadStatus == WebBrowserReadyState.Loading) || (loadStatus == WebBrowserReadyState.Interactive))
                {
                    break;
                }
                counter += 1;
            }
            counter = 0;
            while (true)
            {
                loadStatus = webBrowser1.ReadyState;
                Application.DoEvents();

                if (loadStatus == WebBrowserReadyState.Complete)
                {
                    break;
                }

                counter += 1;
            }
        }
Ejemplo n.º 3
0
        private void waitTillLoad()
        {
            WebBrowserReadyState loadStatus = default(WebBrowserReadyState);
            int waittime = 100000;
            int counter  = 0;

            while (true)
            {
                loadStatus = webBrowser1.ReadyState;
                Application.DoEvents();

                if ((counter > waittime) || (loadStatus == WebBrowserReadyState.Uninitialized) || (loadStatus == WebBrowserReadyState.Loading) || (loadStatus == WebBrowserReadyState.Interactive))
                {
                    break; // TODO: might not be correct. Was : Exit While
                }
                counter += 1;
            }
            counter = 0;
            while (true)
            {
                loadStatus = webBrowser1.ReadyState;
                Application.DoEvents();

                if (loadStatus == WebBrowserReadyState.Complete)
                {
                    break; // TODO: might not be correct. Was : Exit While
                }

                counter += 1;
            }
            //Stworzone przez Bartek&Karol
            //Kontakt: [email protected]
        }
Ejemplo n.º 4
0
        public void loading()
        {
            WebBrowserReadyState loadStatus = default(WebBrowserReadyState);
            int waittime = 100000;
            int counter  = 0;

            while (true)
            {
                try { loadStatus = webBrowser1.ReadyState; }
                catch { }
                Application.DoEvents();
                if ((counter > waittime) || (loadStatus == WebBrowserReadyState.Uninitialized) || (loadStatus == WebBrowserReadyState.Loading) || (loadStatus == WebBrowserReadyState.Interactive))
                {
                    break; // TODO: might not be correct. Was : Exit While
                }
                counter += 1;
            }
            counter = 0;
            while (true)
            {
                try { loadStatus = webBrowser1.ReadyState; }
                catch { }
                Application.DoEvents();
                if (loadStatus == WebBrowserReadyState.Complete)
                {
                    break; // TODO: might not be correct. Was : Exit While
                }
                counter += 1;
            }
        }
Ejemplo n.º 5
0
        internal override void OnWebHostLoadCommited(object sender, Mono.WebBrowser.LoadCommitedEventArgs e)
        {
            readyState = WebBrowserReadyState.Loaded;
            url        = e.Uri;
            SetScrollbars();
            WebBrowserNavigatedEventArgs n = new WebBrowserNavigatedEventArgs(new Uri(e.Uri));

            OnNavigated(n);
        }
Ejemplo n.º 6
0
        internal override void OnWebHostLoadStarted(object sender, Mono.WebBrowser.LoadStartedEventArgs e)
        {
            documentReady = false;
            document      = null;
            readyState    = WebBrowserReadyState.Loading;
            WebBrowserNavigatingEventArgs n = new WebBrowserNavigatingEventArgs(new Uri(e.Uri), e.FrameName);

            OnNavigating(n);
        }
Ejemplo n.º 7
0
        void tmrevt_PollWBReadyState(object obj, EventArgs e)
        {
            WebBrowserReadyState rsnow = wb1.ReadyState;

            if (rsnow == s_rsprev)
            {
                return;
            }

            log($"[state] wb.ReadyState: {s_rsprev.ToString()} -> {rsnow.ToString()}");

            s_rsprev = rsnow;
        }
Ejemplo n.º 8
0
        public static void DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            WebBrowser browser = sender as WebBrowser;

            WebBrowserReadyState loadStatus = default(WebBrowserReadyState);
            int waittime = 100;
            int counter  = 0;

            while (true)
            {
                loadStatus = browser.ReadyState;
                Application.DoEvents();
                Thread.Sleep(1);

                if (counter > waittime /*|| (loadStatus == WebBrowserReadyState.Complete)*/)
                {
                    break;
                }
                counter++;
            }

            counter = 0;
            while (true)
            {
                loadStatus = browser.ReadyState;
                Application.DoEvents();

                if (loadStatus == WebBrowserReadyState.Complete)
                {
                    Bitmap screenshot = new Bitmap(browser.Width, browser.Height);
                    //ImageNativeMethods.GetImage(browser.ActiveXInstance, screenshot, Color.White);

                    browser.DrawToBitmap(screenshot, new Rectangle(0, 0, browser.Width, browser.Height));

                    using (MemoryStream stream = new MemoryStream())
                    {
                        screenshot.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);

                        byte[] bytes = stream.ToArray();

                        Img.Add((Bitmap) new ImageConverter().ConvertFrom(bytes));

                        screenshot.Dispose();
                    }

                    break;
                }
                counter++;
            }
        }
Ejemplo n.º 9
0
        internal override void OnWebHostLoadFinished(object sender, Mono.WebBrowser.LoadFinishedEventArgs e)
        {
            url           = null;
            documentReady = true;
            readyState    = WebBrowserReadyState.Complete;
            if (isStreamSet)
            {
                byte[] buffer = new byte [data.Length];
                long   len    = data.Length;
                int    count  = 0;
                data.Position = 0;
                do
                {
                    count = data.Read(buffer, (int)data.Position, (int)(len - data.Position));
                } while (count > 0);
                WebHost.Render(buffer);
                data        = null;
                isStreamSet = false;
            }
            SetScrollbars();
            WebBrowserDocumentCompletedEventArgs n = new WebBrowserDocumentCompletedEventArgs(new Uri(e.Uri));

            OnDocumentCompleted(n);
        }
Ejemplo n.º 10
0
        //public static HtmlElement WaitForHtmlElement2(WebBrowser browser, string url, int dalay_in_mss, Func<HtmlElement> get_html_element)
        //{
        //    HtmlElement he = null;
        //    while (he == null)
        //    {
        //        while (browser.Document == null || browser.Document.Body == null)
        //            Application.DoEvents();

        //        he = get_html_element();
        //        if (he == null)
        //        {
        //            if (browser.ReadyState == WebBrowserReadyState.Complete)
        //                throw new Exception("The page has an unknown layout.");
        //            else
        //                Wait(20);
        //        }
        //    }
        //    return he;
        //}

        public static bool WaitForCompletion(this WebBrowser browser, int timeout_in_mss = -1)
        {
            if (timeout_in_mss < 0)
            {
                timeout_in_mss = int.MaxValue;
            }
            DateTime dt = DateTime.Now + new TimeSpan(0, 0, 0, 0, timeout_in_mss);

            while (dt > DateTime.Now)// && browser.ReadyState != WebBrowserReadyState.Interactive))//browser.ReadyState == WebBrowserReadyState.Loading)
            {
                WebBrowserReadyState o = WebBrowserReadyState.Uninitialized;
                browser.Invoke(() =>
                {
                    o = browser.ReadyState;
                });
                if (o == WebBrowserReadyState.Complete)
                {
                    return(true);
                }
                Thread.Yield();
                Thread.Sleep(20);
            }
            return(false);
        }
Ejemplo n.º 11
0
        void YiCheCatch(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            configDic = new Dictionary <string, List <string> >();
            int    n    = 0;//记录车型数
            string url  = e.Url.ToString();
            string url2 = webBrowser1.Url.ToString();
            WebBrowserReadyState state = webBrowser1.ReadyState;

            if (state != WebBrowserReadyState.Complete || url != url2)
            {
                return;
            }
            //if (e.Url.ToString() != webBrowser1.Url.ToString()) return;
            btnCatch.Enabled = true;
            List <List <string> > allList = new List <List <string> >();
            string html = webBrowser1.Document.Body.InnerHtml;

            #region 获取主机厂车型
            int           st          = html.IndexOf("<div class=\"crumbs-txt\">", 0);
            int           ed          = html.IndexOf("</div>", st + 3);
            string        caption     = html.Substring(st, ed - st + 1);
            List <string> captionlist = GetInnerTextList(caption, "a");
            captionlist.Remove("易车");
            captionlist.Remove("车型");
            captionlist.Remove("参数");
            string brand    = "";
            string factory  = "";
            string carmodel = "";
            if (captionlist.Count == 2)
            {
                brand    = captionlist[0];
                factory  = captionlist[0];
                carmodel = captionlist[1];
            }
            else if (captionlist.Count == 3)
            {
                brand    = captionlist[0];
                factory  = captionlist[1];
                carmodel = captionlist[2];
            }
            #endregion
            st = html.IndexOf("id=\"CarCompareContent\"");
            st = html.IndexOf("<table", st);
            ed = html.IndexOf("</table>", st);
            string        table  = html.Substring(st, ed - st + 8);//获得Table表内容
            List <string> trList = GetInnerTextList(table, "tr");
            int           r      = 0;
            foreach (string tr in trList)
            {
                r++;
                List <string> innerlist = new List <string>();
                if (r == 1)
                {
                    string title = "车型名称";
                    //第一列
                    List <string> tdList = GetInnerTextList(tr, "td");
                    foreach (string td in tdList)
                    {
                        List <string> ddlist = GetInnerTextList(td, "dd");
                        if (ddlist.Count == 0)
                        {
                            break;
                        }
                        string car = GetInnerText(ddlist[0], "a");
                        innerlist.Add(car);
                    }
                    configDic.Add(title, innerlist);
                    n           = innerlist.Count;//列数
                    lblTip.Text = title;
                }
                else
                {
                    if (tr.IndexOf("<th") >= 0)
                    {
                        string title = GetInnerText(tr, "th");
                        title = RemoveElement(title, "em");
                        title = GetInnerText(title, "a").Trim();

                        if (title == "定速巡航")
                        {
                            int fjl = 2;
                        }
                        List <string> tdList = new List <string>();
                        //if (title == "限滑差速器/差速锁" || title == "定速巡航")
                        //{
                        //    tdList = GetInnerTextList2(tr, "td");
                        //}
                        //else
                        //{
                        tdList = GetInnerTextList2(tr, "td", n);
                        //}
                        foreach (string td in tdList)
                        {
                            string txt = "";
                            if (title == "厂商指导价")
                            {
                                txt = GetInnerText(td, "b");
                            }
                            else if (title == "商家报价" || title == "北京参考价")
                            {
                                if (td == "无")
                                {
                                    txt = td;
                                }
                                else
                                {
                                    List <string> txtList = GetInnerTextList(td, "a");
                                    txt = txtList[0];
                                }
                            }
                            else if (title == "车身颜色" || title == "外观颜色")
                            {
                                List <string> txtList = GetInnerTextList(td, "li");
                                StringBuilder sbr     = new StringBuilder();
                                foreach (string li in txtList)
                                {
                                    sbr.Append(GetFirstPropertyValue(li, "title"));
                                    sbr.Append(";");
                                }
                                txt = sbr.ToString();
                            }
                            else
                            {
                                txt = RemoveElementTag(td, "div");
                                txt = RemoveElementTag(txt, "strong");
                                txt = RemoveElementTag(txt, "i");
                                txt = RemoveElementTag(txt, "span");
                                txt = txt.Replace("&nbsp;", "").Trim();
                            }
                            innerlist.Add(txt);
                        }
                        #if DEBUG
                        //Console.WriteLine(title);
                        #endif
                        if (configDic.ContainsKey(title))
                        {
                            configDic.Add(title + 2, innerlist);
                        }
                        else
                        {
                            configDic.Add(title, innerlist);
                        }
                        lblTip.Text = title;
                    }
                }
            }
            #region 匹配数据库字段
            Dictionary <string, List <string> > newconfigDic = new Dictionary <string, List <string> >();
            foreach (var obj in configDic)
            {
                if (obj.Key == "限滑差速器/差速锁")
                {
                    List <string> frontList  = new List <string>();
                    List <string> afterList  = new List <string>();
                    List <string> centerList = new List <string>();
                    foreach (string str in obj.Value)
                    {
                        if (str.Trim() == "-")
                        {
                            frontList.Add("-");
                            centerList.Add("-");
                            afterList.Add("-");
                        }
                        else if (str.IndexOf("前") > 0)
                        {
                            frontList.Add("●");
                            centerList.Add("");
                            afterList.Add("");
                        }
                        else if (str.IndexOf("后") > 0)
                        {
                            frontList.Add("");
                            centerList.Add("");
                            afterList.Add("●");
                        }
                        else if (str.IndexOf("中央") > 0)
                        {
                            frontList.Add("");
                            centerList.Add("●");
                            afterList.Add("");
                        }
                        else
                        {
                            frontList.Add("");
                            centerList.Add("");
                            afterList.Add("");
                        }
                    }
                    newconfigDic.Add("前桥限滑差速器/差速锁", frontList);
                    newconfigDic.Add("后桥限滑差速器/差速锁", afterList);
                    newconfigDic.Add("中央差速器结构", centerList);
                }
                else if (obj.Key == "变速箱类型")
                {
                    newconfigDic.Add("变速箱", obj.Value);
                }
                else if (obj.Key == "变速箱类型2")
                {
                    newconfigDic.Add("变速箱类型", obj.Value);
                }
                else if (matchDic.ContainsKey(obj.Key))
                {
                    newconfigDic.Add(matchDic[obj.Key], obj.Value);
                    if (obj.Key == "长×宽×高[mm]")
                    {
                        //5250x1902x1498
                        List <string> lengthList = new List <string>();
                        List <string> widthList  = new List <string>();
                        List <string> hightList  = new List <string>();
                        foreach (string str in obj.Value)
                        {
                            string[] attr = str.Split('x');
                            if (attr.Count() >= 3)
                            {
                                lengthList.Add(attr[0]);
                                widthList.Add(attr[1]);
                                hightList.Add(attr[2]);
                            }
                            else
                            {
                                lengthList.Add("");
                                widthList.Add("");
                                hightList.Add("");
                            }
                        }
                        newconfigDic.Add("长度(mm)", lengthList);
                        newconfigDic.Add("宽度(mm)", widthList);
                        newconfigDic.Add("高度(mm)", hightList);
                    }
                }
                else if (matchDic2.ContainsKey(obj.Key))
                {
                    List <string> newList = matchDic2[obj.Key];
                    if (!newconfigDic.ContainsKey(newList[0]))
                    {
                        List <string> list1 = null;
                        List <string> list2 = null;
                        if (configDic.ContainsKey(newList[1]))
                        {
                            list1 = configDic[newList[1]];
                        }
                        if (configDic.ContainsKey(newList[2]))
                        {
                            list2 = configDic[newList[2]];
                        }
                        List <string> list = new List <string>();
                        for (int j = 0; j < obj.Value.Count; j++)
                        {
                            StringBuilder sbr = new StringBuilder();
                            sbr.Append(list1 == null ? "" : list1[j]);
                            sbr.Append(" / ");
                            sbr.Append(list2 == null ? "" : list2[j]);
                            list.Add(sbr.ToString());
                        }
                        newconfigDic.Add(newList[0], list);
                    }
                }
                else
                {
                    newconfigDic.Add(obj.Key, obj.Value);
                }
            }
            #endregion
            DataTable dt = new DataTable();
            dt.Columns.Add(new DataColumn("品牌", typeof(string)));
            dt.Columns.Add(new DataColumn("厂商", typeof(string)));
            dt.Columns.Add(new DataColumn("车系", typeof(string)));
            foreach (string head in newconfigDic.Keys)//匹配后,原样输出用configDic
            {
                dt.Columns.Add(new DataColumn(head, typeof(string)));
            }

            for (int i = 0; i < n; i++)
            {
                DataRow row = dt.NewRow();
                row["品牌"] = brand;
                row["厂商"] = factory;
                row["车系"] = carmodel;
                foreach (var config in newconfigDic)//匹配后,原样输出用configDic
                {
                    string val = config.Value[i];
                    int    n1  = val.IndexOf("选配");
                    if (n1 >= 0)
                    {
                        val = val.Substring(0, n1);
                    }
                    row[config.Key] = val;
                }
                dt.Rows.Add(row);
            }
            savefile(carmodel, dt);
        }
Ejemplo n.º 12
0
		internal override void OnWebHostLoadFinished (object sender, Mono.WebBrowser.LoadFinishedEventArgs e)
		{
			url = null;
			documentReady = true;
			readyState = WebBrowserReadyState.Complete;
			if (isStreamSet) {
				byte[] buffer = new byte [data.Length];
				long len = data.Length;
				int count = 0;
				data.Position = 0;
				do {
					count = data.Read (buffer, (int) data.Position, (int) (len - data.Position));
				} while (count > 0);
				WebHost.Render (buffer);
				data = null;
				isStreamSet = false;
			}
			SetScrollbars ();
			WebBrowserDocumentCompletedEventArgs n = new WebBrowserDocumentCompletedEventArgs (new Uri (e.Uri));
			OnDocumentCompleted (n);
		}
Ejemplo n.º 13
0
		internal override void OnWebHostProgressChanged (object sender, Mono.WebBrowser.ProgressChangedEventArgs e)
		{
			readyState = WebBrowserReadyState.Interactive;
			WebBrowserProgressChangedEventArgs n = new WebBrowserProgressChangedEventArgs (e.Progress, e.MaxProgress);
			OnProgressChanged (n);
		}
Ejemplo n.º 14
0
		internal override void OnWebHostLoadCommited (object sender, Mono.WebBrowser.LoadCommitedEventArgs e)
		{
			readyState = WebBrowserReadyState.Loaded;
			url = e.Uri;
			SetScrollbars ();
			WebBrowserNavigatedEventArgs n = new WebBrowserNavigatedEventArgs (new Uri (e.Uri));
			OnNavigated (n);
		}
Ejemplo n.º 15
0
		internal override void OnWebHostLoadStarted (object sender, Mono.WebBrowser.LoadStartedEventArgs e)
		{
			documentReady = false;
			document = null;
			readyState = WebBrowserReadyState.Loading;
			WebBrowserNavigatingEventArgs n = new WebBrowserNavigatingEventArgs (new Uri (e.Uri), e.FrameName);
			OnNavigating (n);
		}