Prüfen, ob Event gerade aktiv ist (EventListener?)

  • VB.NET

Es gibt 26 Antworten in diesem Thema. Der letzte Beitrag () ist von Morphesus.

    Prüfen, ob Event gerade aktiv ist (EventListener?)

    Nabend... Ich find einfach keine Lösung für folgendes Problem:
    Ich möchte prüfen, ob ein WebBrowser Control noch Navigiert, oder nicht.

    Like this:

    VB.NET-Quellcode

    1. If WebBrowser1.Navigating Then
    2. ' Bla
    3. End If

    Aber das geht ja nun mal leider nicht :( Kann mir da jemand aushelfen? Thx...

    lg Morph
    Die Sache ist, dass ich den WebBrowser zu einer Seite navigieren lasse. Und wenn er fertig ist, soll er einige Elemente aus der Seite mit Werten füllen.

    Das Problem ist: Bevor der Browser mit dem Navigieren fertig ist will er schon die Werte eintragen -> Exception -.-

    Wie kann ich das Programm also solange "warten lassen", bis das Control fertig ist? Dann kann er ja mit der Ausführung fortfahren... Ich dachte an eine While Schleife -> Fehlanzeige...

    lg Morph
    150:

    Quellcode

    1. private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    2. {
    3. // Webbrowser is ready
    4. this.wb_ready = true;
    5. statuslabel.Text = "Prüfe Seite...";
    6. // You are in-game
    7. if (e.Url.AbsoluteUri.Contains(".die-staemme.de/game.php"))
    8. {
    9. statuslabel.Text = "Filtere wichtige Daten...";
    10. // Filter Server
    11. Regex r1 = new Regex(".*?" + "((?:[a-z][a-z]*[0-9]+[a-z0-9]*))", RegexOptions.IgnoreCase | RegexOptions.Singleline);
    12. Match mt1 = r1.Match(this.webBrowser1.Url.AbsoluteUri);
    13. if (mt1.Success)
    14. {
    15. this.server = mt1.Groups[1].ToString();
    16. }
    17. // Filter Village ID
    18. Regex r2 = new Regex("(village)(=)(\\d+)");
    19. Match mt2 = r2.Match(this.webBrowser1.Document.GetElementById("menu_row").Children[0].Children[0].GetAttribute("href"));
    20. if (mt2.Success)
    21. {
    22. this.villageid = mt2.Groups[3].ToString();
    23. }
    24. statuslabel.Text = "Aktiviere Komponenten...";
    25. this.toolStripMenuItem5.Enabled = true;
    26. this.toolStripMenuItem2.Enabled = true;
    27. this.toolStripMenuItem4.Enabled = true;
    28. this.farmenToolStripMenuItem.Enabled = true;
    29. statuslabel.Text = "Progressbars aktualisieren...";
    30. // TODO Bug
    31. this.webBrowser1.Document.GetElementById("SkyScraperAd").SetAttribute("style", "display: none !important; visibility: hidden; width: 0px; height: 0px;");
    32. // Top Toolbar
    33. this.toolStripProgressBar1.Maximum = Convert.ToInt32(webBrowser1.Document.GetElementById("storage").InnerText);
    34. this.toolStripProgressBar1.Value = Convert.ToInt32(webBrowser1.Document.GetElementById("wood").InnerText);
    35. this.toolStripProgressBar2.Maximum = Convert.ToInt32(webBrowser1.Document.GetElementById("storage").InnerText);
    36. this.toolStripProgressBar2.Value = Convert.ToInt32(webBrowser1.Document.GetElementById("stone").InnerText);
    37. this.toolStripProgressBar3.Maximum = Convert.ToInt32(webBrowser1.Document.GetElementById("storage").InnerText);
    38. this.toolStripProgressBar3.Value = Convert.ToInt32(webBrowser1.Document.GetElementById("iron").InnerText);
    39. this.storage.Text = webBrowser1.Document.GetElementById("storage").InnerText;
    40. statuslabel.Text = "Check for full storage...";
    41. // Check for full storage
    42. if (this.toolStripProgressBar1.Value == this.toolStripProgressBar1.Maximum && this.show_oo_holz == true)
    43. {
    44. MessageBox.Show("Das Holzlager ist voll!");
    45. this.show_oo_holz = false;
    46. }
    47. else
    48. {
    49. this.show_oo_holz = true;
    50. }
    51. if (this.toolStripProgressBar2.Value == this.toolStripProgressBar2.Maximum && this.show_oo_stein == true)
    52. {
    53. MessageBox.Show("Dein Lehmlager ist voll!");
    54. this.show_oo_stein = false;
    55. }
    56. else
    57. {
    58. this.show_oo_stein = true;
    59. }
    60. if (this.toolStripProgressBar3.Value == this.toolStripProgressBar3.Maximum && this.show_oo_eisen == true)
    61. {
    62. MessageBox.Show("Dein Eisenlager ist voll!");
    63. this.show_oo_eisen = false;
    64. }
    65. else
    66. {
    67. this.show_oo_eisen = true;
    68. }
    69. statuslabel.Text = "Daten werden ausgelesen...";
    70. // Fill Database
    71. MatchCollection mtchs = Regex.Matches(this.webBrowser1.DocumentText, "<td>.*</td>");
    72. TempHeer heer = new TempHeer(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
    73. foreach (Match m in mtchs)
    74. {
    75. if (m.Value.Contains("Speerträger"))
    76. {
    77. // MessageBox.Show(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", ""));
    78. heer.speer = Convert.ToInt32(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", ""));
    79. statuslabel.Text = Convert.ToInt32(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", "")) + " Speerkäpfer";
    80. }
    81. if (m.Value.Contains("Schwertkämpfer"))
    82. {
    83. // MessageBox.Show(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", ""));
    84. heer.schwert = Convert.ToInt32(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", ""));
    85. statuslabel.Text = Convert.ToInt32(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", "")) + " Schwertkämpfer";
    86. }
    87. if (m.Value.Contains("Axtkämpfer"))
    88. {
    89. // MessageBox.Show(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", ""));
    90. heer.axt = Convert.ToInt32(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", ""));
    91. statuslabel.Text = Convert.ToInt32(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", "")) + " Axtkämpfer";
    92. }
    93. if (m.Value.Contains("Bogenschütze") || m.Value.Contains("Bogenschützen"))
    94. {
    95. // MessageBox.Show(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", ""));
    96. heer.bogen= Convert.ToInt32(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", ""));
    97. statuslabel.Text = Convert.ToInt32(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", "")) + " Bogenschützen";
    98. }
    99. if (m.Value.Contains("Späher"))
    100. {
    101. // MessageBox.Show(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", ""));
    102. heer.spy = Convert.ToInt32(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", ""));
    103. statuslabel.Text = Convert.ToInt32(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", "")) + " Späher";
    104. }
    105. if (m.Value.Contains("Leichte Kavallerie"))
    106. {
    107. // MessageBox.Show(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", ""));
    108. heer.lkav = Convert.ToInt32(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", ""));
    109. statuslabel.Text = Convert.ToInt32(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", "")) + " Leichte kav.";
    110. }
    111. if (m.Value.Contains("Berittener Bogenschütze") || m.Value.Contains("Berittene Bogenschützen"))
    112. {
    113. // MessageBox.Show(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", ""));
    114. heer.bbogen = Convert.ToInt32(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", ""));
    115. statuslabel.Text = Convert.ToInt32(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", "")) + " Ber. Bogenschützen";
    116. }
    117. if (m.Value.Contains("Leichte Kavallerie"))
    118. {
    119. // MessageBox.Show(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", ""));
    120. heer.lkav = Convert.ToInt32(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", ""));
    121. statuslabel.Text = Convert.ToInt32(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", "")) + " Schwere kav.";
    122. }
    123. if (m.Value.Contains("Rammbock") || m.Value.Contains("Rammböcke"))
    124. {
    125. // MessageBox.Show(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", ""));
    126. heer.rammb = Convert.ToInt32(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", ""));
    127. statuslabel.Text = Convert.ToInt32(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", "")) + " Rammböcke";
    128. }
    129. if (m.Value.Contains("Katapult") || m.Value.Contains("Katapulte"))
    130. {
    131. // MessageBox.Show(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", ""));
    132. heer.katap = Convert.ToInt32(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", ""));
    133. statuslabel.Text = Convert.ToInt32(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", "")) + " Katapulte";
    134. }
    135. if (m.Value.Contains("Adelsgeschlecht") || m.Value.Contains("Adelsgeschlechter"))
    136. {
    137. // MessageBox.Show(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", ""));
    138. heer.adelsg = Convert.ToInt32(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", ""));
    139. statuslabel.Text = Convert.ToInt32(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", "")) + " Adelsgeschlechter";
    140. }
    141. }
    142. statuslabel.Text = "Schreibe temporäre Daten...";
    143. DBConnection.WriteInXML("tmp_heer.xml", typeof(TempHeer), heer);
    144. // Finish
    145. statuslabel.Text = "Bereit";
    146. }
    147. else
    148. {
    149. statuslabel.Text = "Datenfelder leeren...";
    150. this.toolStripProgressBar1.Value = 0;
    151. this.toolStripProgressBar2.Value = 0;
    152. this.toolStripProgressBar3.Value = 0;
    153. statuslabel.Text = "Deaktiviere Komponenten...";
    154. this.toolStripMenuItem5.Enabled = false;
    155. this.toolStripMenuItem2.Enabled = false;
    156. this.toolStripMenuItem4.Enabled = false;
    157. this.farmenToolStripMenuItem.Enabled = false;
    158. this.storage.Text = null;
    159. statuslabel.Text = "Status";
    160. }
    161. }

    Ist zwar C#, aber egal... .Net ^^ Ich baue gerne zwischen VB und C# hin und her...

    Nur wie gesagt... Ich bräuchte etwas in der Art wie:

    VB.NET-Quellcode

    1. If wb1.Completed Then
    Gibt es da denn gar nichts?

    lg Morph
    Ich fühl mich auch schon total gefeuert :( Ich werd nochmal schauen, wo ich was umbauen kann... Vielleicht hilft dir das noch:

    Quellcode

    1. public partial class Form1
    2. {
    3. public bool Bot_StartAttack(
    4. int x,
    5. int y,
    6. int speer,
    7. int schwert,
    8. int axt,
    9. int bogen,
    10. int spy,
    11. int lkav,
    12. int bbogen,
    13. int skav,
    14. int rammb,
    15. int katap,
    16. int pala,
    17. int adelsg)
    18. {
    19. webBrowser1.Navigate("http://" + this.server + ".die-staemme.de/game.php?village=" + this.villageid + "&screen=place");
    20. this.statuslabel.Text = "Fülle Felder...";
    21. // Koordinaten
    22. this.webBrowser1.Document.Forms[0].GetElementsByTagName("x")[0].SetAttribute("value", x.ToString());
    23. this.webBrowser1.Document.Forms[0].GetElementsByTagName("y")[0].SetAttribute("value", y.ToString());
    24. // Block I
    25. this.webBrowser1.Document.Forms[0].GetElementsByTagName("spear")[0].SetAttribute("value", speer.ToString());
    26. this.webBrowser1.Document.Forms[0].GetElementsByTagName("sword")[0].SetAttribute("value", schwert.ToString());
    27. this.webBrowser1.Document.Forms[0].GetElementsByTagName("axe")[0].SetAttribute("value", axt.ToString());
    28. this.webBrowser1.Document.Forms[0].GetElementsByTagName("archer")[0].SetAttribute("value", bogen.ToString());
    29. // Block II
    30. this.webBrowser1.Document.Forms[0].GetElementsByTagName("spy")[0].SetAttribute("value", spy.ToString());
    31. this.webBrowser1.Document.Forms[0].GetElementsByTagName("light")[0].SetAttribute("value", lkav.ToString());
    32. this.webBrowser1.Document.Forms[0].GetElementsByTagName("marcher")[0].SetAttribute("value", bbogen.ToString());
    33. this.webBrowser1.Document.Forms[0].GetElementsByTagName("heavy")[0].SetAttribute("value", skav.ToString());
    34. // Block III
    35. this.webBrowser1.Document.Forms[0].GetElementsByTagName("ram")[0].SetAttribute("value", rammb.ToString());
    36. this.webBrowser1.Document.Forms[0].GetElementsByTagName("catapult")[0].SetAttribute("value", katap.ToString());
    37. // Block IV
    38. this.webBrowser1.Document.Forms[0].GetElementsByTagName("knight")[0].SetAttribute("value", pala.ToString());
    39. this.webBrowser1.Document.Forms[0].GetElementsByTagName("snob")[0].SetAttribute("value", adelsg.ToString());
    40. // ...


    So in etwa sieht die Funktion aus, welche diesen EventListener bräuchte...

    lg Morph

    Dodo schrieb:

    Wenn du die Noob Lösung willst dann

    PseudoCode

    VB.NET-Quellcode

    1. While WebBrowser1.ReadyState = ReadyState.Busy
    2. Application.DoEvents()
    3. End While

    Das hab ich schon getestet (s.o.) -> Hängt sich auf

    @EiPott: Werds mal eben testen... Thx schonmal...

    lg Morph

    EDIT: @EiPott: In diesem Fall leider auch schlecht, da die Hauptfunktion Parameter hat und zwar nicht wenige... :-/