Prüfen, ob Event gerade aktiv ist (EventListener?)
- VB.NET
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 26 Antworten in diesem Thema. Der letzte Beitrag () ist von Morphesus.
-
-
-
-
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 -
-
-
Morphesus schrieb:
Oder was wolltest du mir sagen?
Vermutlich, dass das DocumentCompleted Event GENAU für diesen Zweck erfunden wurde. Und wenn das bei dir zu unübersichtlich ist, musst du halt aufräumen ... -
-
150:
Quellcode
- private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
- {
- // Webbrowser is ready
- this.wb_ready = true;
- statuslabel.Text = "Prüfe Seite...";
- // You are in-game
- if (e.Url.AbsoluteUri.Contains(".die-staemme.de/game.php"))
- {
- statuslabel.Text = "Filtere wichtige Daten...";
- // Filter Server
- Regex r1 = new Regex(".*?" + "((?:[a-z][a-z]*[0-9]+[a-z0-9]*))", RegexOptions.IgnoreCase | RegexOptions.Singleline);
- Match mt1 = r1.Match(this.webBrowser1.Url.AbsoluteUri);
- if (mt1.Success)
- {
- this.server = mt1.Groups[1].ToString();
- }
- // Filter Village ID
- Regex r2 = new Regex("(village)(=)(\\d+)");
- Match mt2 = r2.Match(this.webBrowser1.Document.GetElementById("menu_row").Children[0].Children[0].GetAttribute("href"));
- if (mt2.Success)
- {
- this.villageid = mt2.Groups[3].ToString();
- }
- statuslabel.Text = "Aktiviere Komponenten...";
- this.toolStripMenuItem5.Enabled = true;
- this.toolStripMenuItem2.Enabled = true;
- this.toolStripMenuItem4.Enabled = true;
- this.farmenToolStripMenuItem.Enabled = true;
- statuslabel.Text = "Progressbars aktualisieren...";
- // TODO Bug
- this.webBrowser1.Document.GetElementById("SkyScraperAd").SetAttribute("style", "display: none !important; visibility: hidden; width: 0px; height: 0px;");
- // Top Toolbar
- this.toolStripProgressBar1.Maximum = Convert.ToInt32(webBrowser1.Document.GetElementById("storage").InnerText);
- this.toolStripProgressBar1.Value = Convert.ToInt32(webBrowser1.Document.GetElementById("wood").InnerText);
- this.toolStripProgressBar2.Maximum = Convert.ToInt32(webBrowser1.Document.GetElementById("storage").InnerText);
- this.toolStripProgressBar2.Value = Convert.ToInt32(webBrowser1.Document.GetElementById("stone").InnerText);
- this.toolStripProgressBar3.Maximum = Convert.ToInt32(webBrowser1.Document.GetElementById("storage").InnerText);
- this.toolStripProgressBar3.Value = Convert.ToInt32(webBrowser1.Document.GetElementById("iron").InnerText);
- this.storage.Text = webBrowser1.Document.GetElementById("storage").InnerText;
- statuslabel.Text = "Check for full storage...";
- // Check for full storage
- if (this.toolStripProgressBar1.Value == this.toolStripProgressBar1.Maximum && this.show_oo_holz == true)
- {
- MessageBox.Show("Das Holzlager ist voll!");
- this.show_oo_holz = false;
- }
- else
- {
- this.show_oo_holz = true;
- }
- if (this.toolStripProgressBar2.Value == this.toolStripProgressBar2.Maximum && this.show_oo_stein == true)
- {
- MessageBox.Show("Dein Lehmlager ist voll!");
- this.show_oo_stein = false;
- }
- else
- {
- this.show_oo_stein = true;
- }
- if (this.toolStripProgressBar3.Value == this.toolStripProgressBar3.Maximum && this.show_oo_eisen == true)
- {
- MessageBox.Show("Dein Eisenlager ist voll!");
- this.show_oo_eisen = false;
- }
- else
- {
- this.show_oo_eisen = true;
- }
- statuslabel.Text = "Daten werden ausgelesen...";
- // Fill Database
- MatchCollection mtchs = Regex.Matches(this.webBrowser1.DocumentText, "<td>.*</td>");
- TempHeer heer = new TempHeer(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
- foreach (Match m in mtchs)
- {
- if (m.Value.Contains("Speerträger"))
- {
- // MessageBox.Show(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", ""));
- heer.speer = Convert.ToInt32(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", ""));
- statuslabel.Text = Convert.ToInt32(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", "")) + " Speerkäpfer";
- }
- if (m.Value.Contains("Schwertkämpfer"))
- {
- // MessageBox.Show(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", ""));
- heer.schwert = Convert.ToInt32(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", ""));
- statuslabel.Text = Convert.ToInt32(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", "")) + " Schwertkämpfer";
- }
- if (m.Value.Contains("Axtkämpfer"))
- {
- // MessageBox.Show(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", ""));
- heer.axt = Convert.ToInt32(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", ""));
- statuslabel.Text = Convert.ToInt32(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", "")) + " Axtkämpfer";
- }
- if (m.Value.Contains("Bogenschütze") || m.Value.Contains("Bogenschützen"))
- {
- // MessageBox.Show(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", ""));
- heer.bogen= Convert.ToInt32(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", ""));
- statuslabel.Text = Convert.ToInt32(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", "")) + " Bogenschützen";
- }
- if (m.Value.Contains("Späher"))
- {
- // MessageBox.Show(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", ""));
- heer.spy = Convert.ToInt32(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", ""));
- statuslabel.Text = Convert.ToInt32(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", "")) + " Späher";
- }
- if (m.Value.Contains("Leichte Kavallerie"))
- {
- // MessageBox.Show(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", ""));
- heer.lkav = Convert.ToInt32(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", ""));
- statuslabel.Text = Convert.ToInt32(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", "")) + " Leichte kav.";
- }
- if (m.Value.Contains("Berittener Bogenschütze") || m.Value.Contains("Berittene Bogenschützen"))
- {
- // MessageBox.Show(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", ""));
- heer.bbogen = Convert.ToInt32(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", ""));
- statuslabel.Text = Convert.ToInt32(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", "")) + " Ber. Bogenschützen";
- }
- if (m.Value.Contains("Leichte Kavallerie"))
- {
- // MessageBox.Show(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", ""));
- heer.lkav = Convert.ToInt32(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", ""));
- statuslabel.Text = Convert.ToInt32(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", "")) + " Schwere kav.";
- }
- if (m.Value.Contains("Rammbock") || m.Value.Contains("Rammböcke"))
- {
- // MessageBox.Show(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", ""));
- heer.rammb = Convert.ToInt32(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", ""));
- statuslabel.Text = Convert.ToInt32(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", "")) + " Rammböcke";
- }
- if (m.Value.Contains("Katapult") || m.Value.Contains("Katapulte"))
- {
- // MessageBox.Show(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", ""));
- heer.katap = Convert.ToInt32(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", ""));
- statuslabel.Text = Convert.ToInt32(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", "")) + " Katapulte";
- }
- if (m.Value.Contains("Adelsgeschlecht") || m.Value.Contains("Adelsgeschlechter"))
- {
- // MessageBox.Show(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", ""));
- heer.adelsg = Convert.ToInt32(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", ""));
- statuslabel.Text = Convert.ToInt32(Regex.Match(m.Value, "<strong>.*</strong>").Value.Replace("<strong>", "").Replace("</strong>", "")) + " Adelsgeschlechter";
- }
- }
- statuslabel.Text = "Schreibe temporäre Daten...";
- DBConnection.WriteInXML("tmp_heer.xml", typeof(TempHeer), heer);
- // Finish
- statuslabel.Text = "Bereit";
- }
- else
- {
- statuslabel.Text = "Datenfelder leeren...";
- this.toolStripProgressBar1.Value = 0;
- this.toolStripProgressBar2.Value = 0;
- this.toolStripProgressBar3.Value = 0;
- statuslabel.Text = "Deaktiviere Komponenten...";
- this.toolStripMenuItem5.Enabled = false;
- this.toolStripMenuItem2.Enabled = false;
- this.toolStripMenuItem4.Enabled = false;
- this.farmenToolStripMenuItem.Enabled = false;
- this.storage.Text = null;
- statuslabel.Text = "Status";
- }
- }
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: 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
- public partial class Form1
- {
- public bool Bot_StartAttack(
- int x,
- int y,
- int speer,
- int schwert,
- int axt,
- int bogen,
- int spy,
- int lkav,
- int bbogen,
- int skav,
- int rammb,
- int katap,
- int pala,
- int adelsg)
- {
- webBrowser1.Navigate("http://" + this.server + ".die-staemme.de/game.php?village=" + this.villageid + "&screen=place");
- this.statuslabel.Text = "Fülle Felder...";
- // Koordinaten
- this.webBrowser1.Document.Forms[0].GetElementsByTagName("x")[0].SetAttribute("value", x.ToString());
- this.webBrowser1.Document.Forms[0].GetElementsByTagName("y")[0].SetAttribute("value", y.ToString());
- // Block I
- this.webBrowser1.Document.Forms[0].GetElementsByTagName("spear")[0].SetAttribute("value", speer.ToString());
- this.webBrowser1.Document.Forms[0].GetElementsByTagName("sword")[0].SetAttribute("value", schwert.ToString());
- this.webBrowser1.Document.Forms[0].GetElementsByTagName("axe")[0].SetAttribute("value", axt.ToString());
- this.webBrowser1.Document.Forms[0].GetElementsByTagName("archer")[0].SetAttribute("value", bogen.ToString());
- // Block II
- this.webBrowser1.Document.Forms[0].GetElementsByTagName("spy")[0].SetAttribute("value", spy.ToString());
- this.webBrowser1.Document.Forms[0].GetElementsByTagName("light")[0].SetAttribute("value", lkav.ToString());
- this.webBrowser1.Document.Forms[0].GetElementsByTagName("marcher")[0].SetAttribute("value", bbogen.ToString());
- this.webBrowser1.Document.Forms[0].GetElementsByTagName("heavy")[0].SetAttribute("value", skav.ToString());
- // Block III
- this.webBrowser1.Document.Forms[0].GetElementsByTagName("ram")[0].SetAttribute("value", rammb.ToString());
- this.webBrowser1.Document.Forms[0].GetElementsByTagName("catapult")[0].SetAttribute("value", katap.ToString());
- // Block IV
- this.webBrowser1.Document.Forms[0].GetElementsByTagName("knight")[0].SetAttribute("value", pala.ToString());
- this.webBrowser1.Document.Forms[0].GetElementsByTagName("snob")[0].SetAttribute("value", adelsg.ToString());
- // ...
So in etwa sieht die Funktion aus, welche diesen EventListener bräuchte...
lg Morph -
-
-
-
Dodo schrieb:
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... :-/ -
-
-
-
-
-
Tags
-
Ähnliche Themen
-
2 Benutzer haben hier geschrieben
- Gast (18)
- EiPott (9)