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 Dieser Tipp wurde bereits 23.481 mal aufgerufen.
Anzeige
![]() ![]() ![]() (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
sevISDN 1.0 ![]() Überwachung aller eingehender Anrufe! Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Tipp des Monats ![]() Manfred Bohn IndexOf für mehrdimensionale Arrays Die generische Funktion "IndexOf" ermittelt das erste Auftreten eines bestimmten Wertes in einem n-dimensionalen Array sevGraph (VB/VBA) ![]() Grafische Auswertungen Präsentieren Sie Ihre Daten mit wenig Aufwand in grafischer Form. sevGraph unterstützt hierbei Balken-, Linien- und Stapel-Diagramme (Stacked Bars), sowie 2D- und 3D-Tortendiagramme und arbeitet vollständig datenbankunabhängig! |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |