Torna al Thread

bool semaphoreForDocCompletedEvent; private void button12_Click(object sender, EventArgs e) { checkBox1.Checked = false; //unchecked if the NAvigating event is fired and Checked after DocumentCompleted is fired, only to have a visual reference on the Form HtmlDocument doc = Program.wb.Document; HtmlElement ele = doc.GetElementById("menuTable"); foreach (HtmlElement sub in ele.All) { if (sub.GetAttribute("href").Contains("something")) { ele = sub; break; } } //PHASE 1: clicking on a Web link to navigate to a page that contains other buttons and links object obj = ele.DomElement; System.Reflection.MethodInfo mi = obj.GetType().GetMethod("click"); mi.Invoke(obj, new object[0]); //PHASE 2: Waiting for document completed in order to be sure the document is fully loaded semaphoreForDocCompletedEvent = WaitForDocumentCompleted(); if (!semaphoreForDocCompletedEvent) throw new Exception("casino in giro!"); ele = doc.GetElementByI("button1").FirstChild.FirstChild.FirstChild.NextSibling; //PHASE 3: clicking on a Web button to open a form obj = ele.DomElement; mi = obj.GetType().GetMethod("click"); mi.Invoke(obj, new object[0]); //PHASE 4: displaying a modal MEssageBox that annoy the user a lot if (checkBox1.Checked == false) MessageBox.Show("non c'è stato document completed"); checkBox1.Checked = false; //PHASE 5: submitting the form (that does not need any imput to be filled in) ele = doc.GetElementById("planet"); ele = ele.FirstChild.NextSibling.NextSibling; obj = ele.DomElement; mi = obj.GetType().GetMethod("submit"); mi.Invoke(obj, new object[0]); } private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { Program.toBox = Program.wb.Document.Body.InnerHtml.ToString(); if (Program.wb.ReadyState == WebBrowserReadyState.Complete) { checkBox1.Checked = true; IsBusy = false; } } private bool WaitForDocumentCompleted() { while (IsBusy) { Application.DoEvents(); Thread.SpinWait(1000); } return true; }
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5