Webbrowser Formular ausfüllen



  • ich habs jetzt mal mit curl versucht. ich hab mir nen beispielcode zum einloggen geholt um den mal auszuprobieren:

    #include "stdafx.h"
    #include <stdio.h> 
    #include <curl/curl.h> 
    
    int main(void) 
    { 
      CURL *curl; 
      CURLcode res; 
    
      curl = curl_easy_init(); 
      if(curl) { 
        curl_easy_setopt(curl, CURLOPT_URL, "http://www.usemax.de/member.php?f=start"); 
    
        curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "id=12345&password=12345"); 
    
        res = curl_easy_perform(curl); 
    
        curl_easy_cleanup(curl); 
      } 
      system("PAUSE"); 
      return 0; 
    }
    

    Da kamen erstmal ein paar Fehlermeldungen.
    als ich gesucht habe, woran das liegt, hab ich gefunden, dass man die winmm.lib, ws2_32.lib und die curllib.lib linken muss. hab ich gemacht. anscheinend auch richtig, da ich es einmal falsch gemacht hab und da dierkt die fehlermeldung kam, dass die nicht gefunden werden kann.

    stattdessen kommen jetzt diese fehlermeldungen

    Fehler 1 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__curl_easy_cleanup" in Funktion "_main". curlk.obj
    Fehler 2 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__curl_easy_perform" in Funktion "_main". curlk.obj
    Fehler 3 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__curl_easy_setopt" in Funktion "_main". curlk.obj
    Fehler 4 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__curl_easy_init" in Funktion "_main". curlk.obj
    Fehler 5 fatal error LNK1120: 4 nicht aufgelöste externe Verweise. C:\Dokumente und Einstellungen\Markus\Eigene Dateien\Visual Studio 2008\Projects\curlk\Debug\curlk.exe 1

    kann mir jemand sagen, was ich da noch machen muss? am quellcode kanns ja nicht liegen.



  • Du musst die zwei *lib einbinden.... ich glaube es waren libcurl.lib und libcurldll.lib....

    InFaIN



  • ich werde mich später mal darum kümmern. ich hab jetzt keine lust mehr. ich gukcke erstmal, ob ich noch ein paar andere möglichkeiten finde, zb autohotkey oder so.

    EDIT: aber ich glaub nicht, dass ich mit autohotkey was anfangen kann, es sei denn, ich kann sowas auch in c++ einsetzen.



  • moin, hier noch mal was von mir.

    in vb würde das so aussehen, wenn ich ein formular ausfülle:

    With wbrWebBrowser
            .Document.Forms(0).feld1.Value = txtName.Text
            .Document.Forms(0).feld2.Value = txtTime.Text
            .Document.Forms(0).feld3.Value = txtDate.Text
            .Document.Forms(0).textfeld.Value = lblText.Caption
        End With
    

    kann man das irgendwie in c++ umsetzen?



  • hat keiner ne idee oder sind hier alle einfach zu faul? oder liegts daran, dass keiner da ist.





  • jijin schrieb:

    oder sind hier alle einfach zu faul?

    Einer würde mir jetzt spontan einfallen auf den das Zutrifft - hier sind nämlich bereits Informationen gefallen mit denen man Konkret arbeiten könnte. Einen kleinen Tipp aber für Google: Das gesuchte mit C# verknüpfen, nicht mit C++/CLI. In C# gibt es deutlich mehr Lösungen und Informationen. Die in C++/CLI um zu setzen ist oft nur eine kleine Hürde.



  • hier sind nämlich bereits Informationen gefallen mit denen man Konkret arbeiten könnte

    ich weiß, aber ich wollte noch ein wenig mehr, damit ich auch ein paar alternativen hab. zum beispiel krieg ich curl momentan nicht zum laufen.
    und danke für den tipp, dass ich eher C# verwenden soll.

    watin.sf.net

    das sieht auf den ersten blick perfekt aus^^



  • hab mal ne frage. kann es sein, dass es zu watin keinerlei header gibt bzw. kann ich das überhaupt in c++ umsetzen?



  • Du fügst einfach die DLLs als neue Verweise in das Projekt (VS08) ein ("Projekteinstellungen->Allgemeine Eigenschaften->Neuen Verweis hinzufügen...").

    Minimalbeispiel:

    using namespace System;
    using namespace WatiN::Core;
    using namespace WatiN::Core::Interfaces;
    
    [STAThread]
    Int32 main( array<String^> ^params )
    {
    IBrowser ^browser = BrowserFactory::Create( BrowserType::InternetExplorer );
    browser->GoTo( "http://www.google.de" );
    browser->WaitForComplete();
    
    return 0;
    }
    

    Ich habe den Code oben nicht wirklich getestet. Sollte aber mehr oder weniger so funktionieren 😉



  • super, compilen klappt schonmal ohne probleme. aber beim debuggen kommt dann sowas hier raus:

    Eine nicht behandelte Ausnahme des Typs "System.IO.FileNotFoundException" ist in WatiN.Core.dll aufgetreten.

    Zusätzliche Informationen: Die Datei oder Assembly "Interop.SHDocVw, Version=1.1.0.0, Culture=neutral, PublicKeyToken=null" oder eine Abhängigkeit davon wurde nicht gefunden. Das System kann die angegebene Datei nicht finden.

    ich hab das so gemacht, dass man auf nen button klicken muss. und sobald man drauf klickt, kommt die fehlermeldung. das sagt mir jetzt nicht so wirklich was, da ich noch nicht so lange mit vs programmiere. ich fand den umstieg mit den strings schon schwer genug und jetzt sowas^^



  • InFaIN schrieb:

    Du musst die zwei *lib einbinden.... ich glaube es waren libcurl.lib und libcurldll.lib....

    InFaIN

    Ich habe das selbe Problem mit curl wie er. Nur kann ich keine zweite *.lib finden. Muss ich die seperat downloaden, oder muss ich die auch iregendwie selbst kompilieren?


Anmelden zum Antworten