textfelder in webseite suchen und mit Werte füllen



  • Hallo an alle,

    Ich habe ein problem, vielleich könnt Ihr mir da weiter helfen.

    Ich möchte ein Programm schreiben, das im Hintergrund läuft
    und wenn ich es aufruffe (Funktiontaste oder Kürzel) alle textfelder von der aktuelle Webseite holt und mit Werte füllen.

    Wie kann ich es realisieren?

    Vielen Dank im Vorraus
    Sayangoin



  • [b]Dim WithEvents[/b] MyInternetBrowser As SHDocVw.InternetExplorerClass
    [b]Dim WithEvents[/b] TheHTMLdocumentInTheBrowser As mshtml.HTMLDocumentClass
    [b]Dim WithEvents[/b] objHTMLForm As mshtml.HTMLFormElement
    
    [b]Private Sub[/b] test()
        MyInternetBrowser = [b]New[/b] SHDocVw.InternetExplorer
        MyInternetBrowser.Visible = [b]False[/b]
    
        MyInternetBrowser.Navigate2("www.sonndreck.de")
    
      [b]End Sub[/b]
    
      ' Automatisch auf ner Seite wo ich rumgeistere meine Accountdaten eintragen,
      ' wenn Htmlseite mit Login fertiggeladen und Prassel dann abschicken! keine 
      ' Finger mehr krumm machen für Passwort *g*. Man muss nathührlich den HTML - 
      ' Code der Login - Seite kennen
    
      [b]Private Sub[/b] MyInternetBrowser_NavigateComplete2([b]ByVal[/b] pDisp [b]As Object[/b], [b]ByRef[/b] URL [b]As Object[/b]) [b]Handles[/b] MyInternetBrowser.NavigateComplete2
        TheHTMLdocumentInTheBrowser = [b]CType[/b](MyInternetBrowser.Document, mshtml.HTMLDocumentClass)
        MyInternetBrowser.Visible = [b]True[/b]
        objHTMLForm = CType(MyInternetBrowser.Document, mshtml.HTMLDocumentClass).forms.item(0)
        objHTMLForm.elements("loginname").value = "hmjaderusername"
        objHTMLForm.elements("password").value = "hmjadaspasswortzumusernamen"
    
        ' so jetzt noch den LoginKlick simulieren ausm Programm  
        [b]CType[/b](MyInternetBrowser.Document, mshtml.HTMLDocumentClass).getElementById("login").click()
    
      [b]End Sub[/b]
    

    gib mal folgende Zeichenkette bei google ein: SHDocVw.InternetExplorer
    müsstest nen Suchergebins auf dei MSDN kriegen bei Microsoft
    nen anderes Suchstichwort ist Interoperabilität
    Du brauchst desweiteren noch 2 Verweise im Projekt!

    einmal Microsoft.mshtml
    und zum anderen Interop.SHDocVw

    Die Browserklasse MyInternetBrowser.Document
    hat wie Du sehen kannst nen Document-Member!
    Diese Teil entspricht nach dem W3C - Standard dem DOM - Modell,
    also einer Abbildung einer Webseite im RAM (HTMLcode im RAM)!
    Jedenfalls hat Microsoft diesen DOM - Standard in Form ner
    COM - Komponente (Datentyp SHDocVw.InternetExplorer) umgesetzt.

    hinter diesen Code:

    mshtml.HTMLDocumentClass).forms.item(0)
    

    ich hebs nochmal mittels Marker hervor!

    mshtml.HTMLDocumentClass).[b]forms[/b].item(0)
    

    verbirgt sich auf meiner Seite wo ich mich einlogge nen Html - Formular
    mit allen nötigen Feldern fuern nen Login

    mfg sclearscreen 😉 👍

    P.S.: Nur Mut mit den Suchstichwörtern und google und der Microsoftseit im Netz
    solltest Du zu was produktiven kommen 🙂

    Hier noch nen Aszug aus dem HTML - Quellscript denn ich mir reinziehen musste,
    weil ich wssen musste wie die Htmlelemente (Inputfelder) heissen laut Code wo
    der Nutzer seine Accountdaten einträgt!
    wichtig fuer Aufruf:

    objHTMLForm.elements("loginname").value = "hmjaderusername"
    objHTMLForm.elements("password").value = "hmjadaspasswortzumusernamen"
    

    d.h ich fülle im DOM - Objekt (sprich HTML - Seite im Speicher)
    Formulardaten aus und zwar aus meinem VB .NET - Programm!

    Dazu musst ich mir HTML - Code reinziehn um an die Id's fuer die Inputfelder ranzukommen!

    <form action="login.php" method="POST">
    					             <table width="139" height="135" border="0" align="center" cellpadding="0" cellspacing="3">
    
                             <tr>
                              <td width="107" height="19" class="tbltext">
                                <div align="left"><font face="Verdana, Arial, Helvetica, sans-serif"><font face="Verdana, Arial"><b>
                                  <input name="loginname" type="text" class="bginput" onclick="this.value=''" value="Loginname" size="15" maxlength="50" >
    
                                </b> </font> </font></div></td>
                            </tr>
                            <tr>
                              <td height="11" class="tbltext"><div align="left"><font face="Verdana, Arial, Helvetica, sans-serif"><font face="Verdana, Arial"> <b>
                                  <input name="password" type="password" class="bginput" onclick="this.value=''" size="15" maxlength="50" >
                              </b> </font> </font></div></td>
    
                            </tr>
    
    						<tr>
                              <td height="22" class="tbltext" ><font face="Verdana, Arial"> <b>
                                <select name="serversel" class="bginput">
    								<option value="v3.1" selected>Op-W 3.1</option>
    								<option value="v2.0">Op-W Classic</option>
    							</select>
    
                              </b> </font></td>
                            </tr>
    
                            <tr>
                              <td height="22" class="tbltext" ><font face="Verdana, Arial"> <b>
                                 <input name="login" type="submit" class="bginput" value="&raquo; Login" size="12" >
                              </b> </font></td>
                            </tr>
    
                            <tr>
                              <td height="26" class="tbltext" >
                              <font color="#CCCCCC"><a href="login.php?show=pwreminder"><img src="img/dot.gif" width="7" height="7" border="0"> Passwort vergessen?<br>
                              </a><img src="img/dot.gif" width="7" height="7"></font> <a onclick="NewWindow(this.href,'name','600','500','yes');return false" href="http://s3.op-weltherrschaft.de/support/"><strong>Supportticket </strong></a><img src="img/neu.gif" width="24" height="11"></td>
                            </tr>
                          </table>
    					          </form>
    

    so nun is aber wirklich gut.



  • habe obigen Beitrag nochmal entrümpelt was dich nur verwrrt ist raus war nur alter Testcode, der dich sonst gestört hätte

    Mit freundlicher Unterstützung von sclearscreen 🙂



  • Da Vb .NET auf einunddemselben FRAMEWORK beruht ist manches nur Syntaxmässig anders in C# und dergleichen!
    D.h die Datentypen und deren Eigenschaften und Methoden sind immer gleich.

    so das sollte aber erstmal als Hilfe ausreichen!

    so long



  • Vielleicht ist dies Posting reif für nen Einschub ins FAQ?!?



  • du konntest auch den Code zu www.codeproject.com einsenden 😉



  • Vertexwahn schrieb:

    du konntest auch den Code zu www.codeproject.com einsenden 😉

    Was soll den das heissen? Oder bist Du son schlaues Bürschen was das Rad immer neu erfindet? Ich will mich doch hier nicht profilieren oder feiern, aber wenn jemand nen Problem hat helfe ich gerne auch wenn ich kann, auch wenn ich mir vorher Mühe machen musst, um im Netz was zu finden. Im übrigen habe ich diesen angepassten Code nicht auf www.codeproject.com gefunden sondern es ist ein Technologiebeispiel, was ich auf der Microsoft - Seite gefunden habe. Jedenfalls hier im FAQ .NET steht sowas noch nicht drin!
    Das .NET FAQ ist noch recht magger, finde ich.

    mfg sclearscreen 🙂

    P.S.: Nathürlich suche ich mir die Sachen auch zusammen, und passe den Code an!
    Aber hier im FAQ steht da auch noch nischt drüber über dies Problem! Ich habe mich auch totgesucht bevor ich was brauchbares gefunden hab. 👍



  • @sclearscreen
    ich habe in keiner weise versucht dir zu unterstellen, das du fremden Coden klaust - ich meinte das ernst mit dem einschicken an codeproject

    ich klaue mir meinen code grundsätzlich zusammen 😉 und bin bestimmt keiner, der das Rad immer wieder neu erfindet



  • ich denke Du bist ein liebenswürdiger gemütlicher Mensch, nee jetzt wirklich im ernst! 🙂

    Aber mal was anderes, ich beschäftige mich jetzt seid ca 2 1/2 Monaten mit .NET,
    hauptsächlich mit VB und C# wirklich geil dies Teil. Und diese Technologiebeispiele
    in der MSDN und in den Microsoft Press - Büchern sind schon echt was feines.
    Und der Oberhammer ist meiner Meinung diese Interoperabilität! Die ganze Software
    von Microsoft und manche die unter Windows läuft und nicht speziell von Microsoft,
    stellt halt über die COM - Technologie Schnittstellen nach aussen bereit.
    Man kann somit das gesamte Office - Paket durch nen anderes Programm von aussen steuern etc. sehr nett 👍.

    mfg sclearscreen 🙂


Anmelden zum Antworten