internal override void OnWebHostProgressChanged(object sender, Mono.WebBrowser.ProgressChangedEventArgs e) { readyState = WebBrowserReadyState.Interactive; WebBrowserProgressChangedEventArgs n = new WebBrowserProgressChangedEventArgs(e.Progress, e.MaxProgress); OnProgressChanged(n); }
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; } }
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] }
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; } }
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); }
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); }
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; }
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++; } }
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); }
//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); }
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(" ", "").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); }
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); }
internal override void OnWebHostProgressChanged (object sender, Mono.WebBrowser.ProgressChangedEventArgs e) { readyState = WebBrowserReadyState.Interactive; WebBrowserProgressChangedEventArgs n = new WebBrowserProgressChangedEventArgs (e.Progress, e.MaxProgress); OnProgressChanged (n); }
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); }
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); }