Torna al Thread

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Threading; namespace WindowsFormsApplication1 { public partial class Form1 : Form { #region Fields (2) bool IsBusy; bool semaphoreForDocCompletedEvent; #endregion Fields #region Constructors (1) public Form1() { InitializeComponent(); } #endregion Constructors #region Methods (6) // Private Methods (6) private void button1_Click(object sender, EventArgs e) { webBrowser1.Navigate("https://www.axxes.fr/it"); //Sequencing semaphoreForDocCompletedEvent = WaitForDocumentCompleted(); if (!semaphoreForDocCompletedEvent) throw new Exception("casino in giro!"); } private void button2_Click(object sender, EventArgs e) { HtmlElement buttonToPress = webBrowser1.Document.GetElementById("e_menuLevel1"); foreach (HtmlElement elem in buttonToPress.FirstChild.All) { if (elem.InnerText.ToLower().Contains("area clienti")) { buttonToPress = elem; break; } } object obj = buttonToPress.DomElement; System.Reflection.MethodInfo mi = obj.GetType().GetMethod("click"); mi.Invoke(obj, new object[0]); semaphoreForDocCompletedEvent = WaitForDocumentCompleted(); if (!semaphoreForDocCompletedEvent) throw new Exception("casino in giro!"); } private void button3_Click(object sender, EventArgs e) { //compilazione campi HtmlElement campoUtente = webBrowser1.Document.GetElementById("login"); campoUtente.SetAttribute("Value", "stringa_del_nome"); HtmlElement pwd = webBrowser1.Document.GetElementById("password"); pwd.SetAttribute("Value", "stringa_della_passowrd"); //submission HtmlElement okBtn = webBrowser1.Document.GetElementById("blocident"); foreach (HtmlElement subElem in okBtn.All) { if (subElem.GetAttribute("classname").ToLower().Contains("btok")) { okBtn = subElem; break; } } object obj = okBtn.DomElement; System.Reflection.MethodInfo mi = obj.GetType().GetMethod("click"); mi.Invoke(obj, new object[0]); semaphoreForDocCompletedEvent = WaitForDocumentCompleted(); if (!semaphoreForDocCompletedEvent) throw new Exception("casino in giro!"); } private void DocCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { if (webBrowser1.ReadyState == WebBrowserReadyState.Complete) { IsBusy = false; return; } } private void Navigating(object sender, WebBrowserNavigatingEventArgs e) { IsBusy = true; } /// <summary> /// Questa versione è proprio brutta, perchè DoEvents è una porcata ma funziona tutto bene finchè non tenti di premere il pulsante di chiusura form principale. /// Inibiscilo! /// </summary> /// <returns>a dummy value to be used as sequencer.</returns> private bool WaitForDocumentCompleted() { while (IsBusy) { Application.DoEvents(); Thread.SpinWait(1000); } return true; } #endregion Methods } }
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5