Ik ben bezig met een simpel programmatjes wat wat acties op een web-pagina automatiseerd zoals het inloggen.
Ik heb een Controller Class gemaakt die wat dingen doet. Zo heb ik bijvoorbeeld een login method die ongeveer het volgende doet.
Maar wat ik eigenlijk wil is dat de Login method pas returnt als het inloggen ( De event handler ) echt is uitgevoerd.
Het is natuurlijk niet echt een mogenlijkheid om gewoon een sleep te doen en te wachten totdat de handler echt is uigevoerd want het event wordt waarschijnlijk in dezelfde Thread getriggerd.
Eigenlijk zou ik iets willen van een BackgroundWorker die ik start in login en dat ik daarna meteen iets van worker.Wait(); doe. De worker kan daarna alle belangrijke dingen uitvoeren en pas exiten op het moment dat het form gesubmit is.
Ik kan nou alleen even niet echt een nette manier bedenken om dit te realiseren dus ik hoopte dat jullie wat ideen voor mij hebben.
Ik heb een Controller Class gemaakt die wat dingen doet. Zo heb ik bijvoorbeeld een login method die ongeveer het volgende doet.
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| public void Login() { browser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(LoginDocumentHandler); browser.Navigate(new Uri(server + "login.php")); } void LoginDocumentHandler(object sender, WebBrowserDocumentCompletedEventArgs e) { foreach (HtmlElement el in browser.Document.GetElementsByTagName("input")) { if (el.Name.ToLower().StartsWith("name")) { el.SetAttribute("value", username); } if (el.Name.ToLower().StartsWith("pw")) { el.SetAttribute("value", password); } } browser.Document.Forms[0].InvokeMember("submit"); } |
Maar wat ik eigenlijk wil is dat de Login method pas returnt als het inloggen ( De event handler ) echt is uitgevoerd.
Het is natuurlijk niet echt een mogenlijkheid om gewoon een sleep te doen en te wachten totdat de handler echt is uigevoerd want het event wordt waarschijnlijk in dezelfde Thread getriggerd.
Eigenlijk zou ik iets willen van een BackgroundWorker die ik start in login en dat ik daarna meteen iets van worker.Wait(); doe. De worker kan daarna alle belangrijke dingen uitvoeren en pas exiten op het moment dat het form gesubmit is.
Ik kan nou alleen even niet echt een nette manier bedenken om dit te realiseren dus ik hoopte dat jullie wat ideen voor mij hebben.
“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”