Wenn von VB Programmen aus Web-Formulare automatisch ausgefüllt werden sollen, die nicht selber programmiert wurden, stellt sich das Problem, dass die Namen und Datentypen des jeweiligen Formularfeldes mühsam aus dem HTML-Code ermittelt werden müssen. Hier nun ein Tipp, mit dem dieses recht einfach geht: Erstellen Sie ein neues Windows.Forms Projekt und platzieren folgende Steuerelemente auf das Formular:
Beim Klick auf den Button "cmdAnzeigen" soll zunächst die HTML-Seite geladen und die Anzahl der darin enthaltenen Formulare ermittelt werden: Public Class Form1 Private bLoaded As Boolean = False Private Sub cmdAnzeigen_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles cmdAnzeigen.Click ' Anmelde-Seite laden bLoaded = False If Me.cmbURL.Text = "" Then Exit Sub WebBrowser1.Navigate(Me.cmbURL.Text) ' Warten, bis Webseite vollständig geladen wurde Do While Not bLoaded System.Windows.Forms.Application.DoEvents() Loop End Sub Private Sub WebBrowser1_DocumentCompleted(ByVal eventSender As System.Object, _ ByVal eventArgs As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) _ Handles WebBrowser1.DocumentCompleted Me.txtFormCount.Text = (WebBrowser1.Document.Forms.Count) ' ********************************************************* ' Webseite wurde vollständig geladen ' Diese Sub wird nach dem Laden von jedem Frame ausgelöst. ' Frage wann der letzte Frame geladen wurde ' Durch die If Abfrage ' ********************************************************* bLoaded = True End Sub Der eigentliche Anzeige-Teil besteht aus einem Button mit dem die Procedure "procElementeAnzeigen" gestartet wird. Für das Ergebnis wird ein MutliLine-Text-Steuerelement benötigt. Wenn das Web-Steuerelement die richtige Seite anzeigt, wird mit dem Command-Button die Procedure gestartet. Dieser fragt alle Sub-Formulare der Seite ab und listet die Steuerelement auf. Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click ' alle Elemente anzeigen procElementeAnzeigen() End Sub Public Sub procElementeAnzeigen() On Error Resume Next Dim AnzahlForm As Short Dim i As Int16 Dim AnzahlElemente As Int16 Dim y As Int16 Dim Element As String Me.txtSteuerElemente.Clear() AnzahlForm = WebBrowser1.Document.Forms.Count For i = 0 To AnzahlForm - 1 With WebBrowser1.Document.Forms(i) AnzahlElemente = .GetElementsByTagName("Input").Count Me.txtSteuerElemente.AppendText(vbCrLf & "Name Form: " & .Name) For y = 0 To AnzahlElemente - 1 With .GetElementsByTagName("Input").Item(y) Element = "Name: " & .GetAttribute("name") & _ "; Typ: " & .GetAttribute("type") & _ "; Value: " & .GetAttribute("value") & _ "; Checked: " & .GetAttribute("checked") & _ "; onClick: " & .GetAttribute("onclick") End With Me.txtSteuerElemente.AppendText(vbCrLf & Element) Next y End With Next i End Sub End Class |