Hi.
Das Webbrowser "Control" sollte erstmal alles geladen haben:
Code:
Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
If Me.WebBrowser1.ReadyState = WebBrowserReadyState.Complete Then
'geladen = True
End If
Do While Me.WebBrowser1.ReadyState = WebBrowserReadyState.Loading And Me.WebBrowser1.IsBusy = True
Application.DoEvents()
Loop
End Sub
Wenn Das dann Geschehen ist mit einer schleife über die "INPUT" elemente gehen und diese evtl. mit ihrem "Namen" oder "ID" aufrufen, und befüllen mit den Daten.
Die Schleife (hier über alle Links):
1. Variante:
Code:
For Each T As HtmlElement In Me.WebBrowser1.Document.Links
Me.CheckedListBox2.Items.Add(T.GetAttribute("href").ToString)
Next
2. Variante:
Code:
For i as Integer = 0 to Me.WebBrowser1.Document.Links.Count -1
Me.CheckedListBox2.Items.Add(Me.WebBrowser1.Document.Links.Item(i)).GetAttribute("href")
Next
Gibt es Formulare oder Frames, muss das berücksichtigt werden.
Was aber zu erwähnen ist, das Inhalt einer (z.B.
Tabelle als Ausgangspunkt für die Schleife heran gezogen werden kann.
Konkreter: Alles Textfelder der Tabelle "links" - die Tabelle hat hier eine "ID" im HTMLTag -
Code:
Dim i As Integer = 0
For i = 0 To Me.WebBrowser1.Document.GetElementById("links").Children.Count - 1
Me.ComboBox1.Items.Add(Me.WebBrowser1.Document.GetElementById("links").Children.Item(i).InnerText)
Next
Es werden nicht alle Felder der Seite sondern nur ein Teilbereich berücksichtigt.
Was noch zu erwähnen ist, wenn ib der Tabelle auch andere "Kinder" - Elemente sind werde dies dann mit gezählt.
Abhilfe ist die Schleife mit Filter erweitern.
Code:
If Me.WebBrowser1.Document.GetElementById("links").Children.Item(i).GetAttribute("A") Then
'nehme das Hyperlink Element etc.....
End If
Wie ein HTMLTextfeld mit Text füllen mit VB und WebbrowserControl:
Code:
'Me.WebBrowser1.Document.Body.Document.GetElementById("strasseeingabefeld").SetAttribute("value", "Hauptstrasse") 'Strasse
Hier ist das Textfeld mit einer "ID" versehen und wird so angesprochen.
Wenn das Textfeld keine "ID" oder "Name" Eigenschaft hat, muss die HTML Struktur durchsucht werden.
TIPP: suchen und durchzählen Lassen, dann das Element mit dem Index ansprechen ---.Item(index).SetAttribute("value","MeinText")
Das absenden des Formulars ( click auf Button in HTML mit VB und WerbbrowserControl)
Code:
Me.WebBrowser1.Document.GetElementById("Submit").InvokeMember("click")
und der Doppelclick in einem Option Feld (Listbox)
Code:
Me.WebBrowser1.Document.GetElementById("MeineAuswahlliste").GetElementsByTagName("option").Item(1).InvokeMember("ondblclick")
Anmerkung, geht bei mir nicht immer mit dem Doppelclick, noch nicht geforscht....
So genug Blasen an den Fingerkuppen......
Hoffe konnte Helfen.....
c.u. Joshi aus HH