Benutzeroberfläche / libcurl

Halfbax

Erfahrenes Mitglied
Guten Abend!

Ich schreibe folgendes hier, da ich nach einigen Stunden keine Lösung sowie Tutorial gefunden habe! Wir haben erst vor kurzen mit C++ angefangen und ich bereite ich jeweil immer vor der jeweilige vor.

Zunächst möchte ich die cUrl Libary ansprechen, da ich mich damit auf einer Internetseite einloggen möchte. Ich habe mir schon HTTP Live Headers zugelegt und habe bereits den Part gefunden, wo mit einen Post-Befehl der Login verwendet wird. Ich habe kaum Tutorials gefunden, die ein solches Verfahren verwenden, wenn ich welche gefunden habe, waren sie sehr unverständlich und haben bei mir zu keinem Ergebnis geführt.

Zu meinem zweiten Problem, denn ich möchte das ganze Programm grafisch darstellen, um es einfach übersichtlicher zu machen.
In diesen Forum finde ich selbst mit der Suchfunktion einige Tutorials, aber keine für C++. Ich möchte keineswegs hier als C&P User dastehen, dennoch möchte ich euch bitten mir zu helfen, indem man mir Beispiele zeigen könnte(Beispiel Code). Für den Anfang hatte ich vor einige etwas einfachere Komponenten zu verwenden wie etwa 2 Textboxen & 2 Schaltflächen(Button).

Ich hoffe ihr könnt mir helfen, um dem Board sein Slogan wahr zu machen :rolleyes:

Liebe Grüße
Halfbax
 
Hi und Willkommen bei tutorials.de,

zu 1: Was genau ist dein Problem?
Ich verstehs leider nicht.

Zu 2: Hast du dich bereits für ein Framework/etc. entschieden?
 
Bezüglich libcurl, sieh dir den easy Part an, da gibt es eine vereinfachte Methode, um URLs aufzurufen. Da sieht sowas dann in etwa so aus. Vermutlich musst du einige der Parameter anpassen:

Code:
bool CurlImpl::Post( const std::string& URL, const ByteBuffer& PostParams, ByteBuffer& Result )
  {
    CURL* curl = curl_easy_init();
    if ( curl == NULL )
    {
      return false;
    }
    CURLcode res;

    curl_easy_setopt( curl, CURLOPT_WRITEFUNCTION, WriteFunction );
    curl_easy_setopt( curl, CURLOPT_WRITEDATA, this );
    curl_easy_setopt( curl, CURLOPT_URL, URL.c_str() );
    curl_easy_setopt( curl, CURLOPT_HTTPAUTH, CURLAUTH_NTLM );
    curl_easy_setopt( curl, CURLOPT_TIMEOUT, 90 );
    curl_easy_setopt( curl, CURLOPT_POSTFIELDS, PostParams.Data() );
    curl_easy_setopt( curl, CURLOPT_POSTFIELDSIZE, PostParams.Size() );

    curl_easy_setopt( curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_SSLv3 ); 
    curl_easy_setopt( curl, CURLOPT_SSL_VERIFYPEER, 0 );

    res = curl_easy_perform( curl );
  
    curl_easy_cleanup( curl );

    Result = m_ReceivedData;

    return ( res == 0 );
  }
 
Hallo.
Da ich ungern "veraltete" Frameworks nutze habe ich mit für das 4.5 Framework entschieden.

Mein Problem ist, das ich nicht genau weiß wie ich das ganze veranstalten soll. Nun gute Danke schon mal Endurion, aber magst du mir das vielleicht etwas genauer erkläre. Das wäre sehr nett von dir.

Und zu der GUI, ich habe damals etwas mit Vb.Net programmiert & da musste ich halt keinen Code für die Gui schreiben. Wie schauts da bei C++ aus, gibtes da Addons oder ähnliches für VS12 Ultimate (Studentenversion, nicht gecrackt).

LG
 
Du verwechselst da was.
Mit den GUI-Möglichkeiten im .NET-Framework (C#, VB.NET...) kannst du in VS zwar auch für
C/C++-Programme GUIs machen, du kommst aber damit vom "echten" C++ weg
zu einer Nur-Microsoft-Sache (eben die Windows Forms usw.).

Das soll nicht heißen, dass du es nicht verwenden kannst, aber sei dir darüber im Klaren,
dass so ein C++/.NET-Gemisch dann mit anderen Compilern und/oder anderen Betriebssystemen
(Linux...) nicht funktioniert
(na gut, es gibt Zusatzsoftware, die das zumindest teilweise ermöglicht,
aber alles andere als perfekt).

Wenn du die WindowsForms etc. verwenden willst kannst du wie bisher damit arbeiten.
Die Oberfläche zusammenklicken usw.

Wenn du lieber bei reinem C/C++ bleibst:
Außer den direkten Betriebssystemfunktionen (für Normalzwecke etwas umständlich,
auch nicht auf Linux portabel) gibt es noch einige wichtige (und viele unwichtige)
Libraries zur GUI-Erstellung, die allerdings nicht von Haus aus bei C++ dabei sind,
sondern je nach bedarf aus dem Internet zu laden sind.

Was die so können, Zusammenklickmöglichkeiten, Ähnlichkeit zu Windowsforms usw.usw. variiert.
Das war oben die eigentliche Frage, ob du dir schon was ausgesucht hast.
 
Evtl. wäre MFC was für dich, da gab es auch in den letzten VS-Versionen neue Updates. Damit bleibst du bei C++. Wenn du die MFC statisch dazulinkst, hast du auch keine Abhängigkeiten (die .exe ist halt einiges größer).

Zu den libcurl-Aufrufen gibt es soo viel nicht zu erzählen.

Die beiden Aufrufe

curl_easy_setopt( curl, CURLOPT_WRITEFUNCTION, WriteFunction );
curl_easy_setopt( curl, CURLOPT_WRITEDATA, this );

geben eine Zielfunktion an, die bei Datenempfang aufgerufen wird, der Parameter in WRITEDATA wird an die Zielfunktion mit übergeben, damit ich da Zugriff auf die Objektinstanz habe (die Zielfunktion muß leider statisch sein).

Die Doku von libcurl ist auch relativ brauchbar, wenn du da nach curl_easy_setopt suchst, findest du alle Parameter haarklein erklärt.
 
Ja, hatte wohl etwas verwechselt. Danke, das du mir das nochmal genauer erläutet hast, sheel. :)
Ich würde dann doch gern bei einen reinen C/C++ Code bleiben.
Es wäre von euch sehr zu vorkommend, wenn ihr mir vielleicht einige Frameworks dafür nett, die solche "Funktionen" teilweise bieten, denn ich habe nicht so die Ahnung von GUI Erstellung. Und möchte mich erstmal komplett auf die restlichen Funktionen, die das Programm bieten soll, konzentrieren.

Endurion, ich habe mir grad die Doku angeguckt. Ich habe wie du schon vorrausgesagt hast etwas brauchbares gefunden :), was mich erfreut. Nun zu dem was ich gefunden habe.

Gefunden habe ich folgenden Befehl inkl. Beispiel :
Code:
Post a simple "name" and "phone" guestbook.
 
        curl -d "name=Rafael%20Sagula&phone=3320780" http://www.where.com/guest.cgi

Kann ich das ganze dann nun in einer Funktion verwenden, die wie folgt aussieht ?
Code:
Einloggen(string Username, string Password)
{
curl -s "json=%7B%22name%22%3A%22Username%22%2C%22password%22%3A%22Password%22%2C%22autologin%22%3Atrue%7D"
}

Wäre das ganze so realisierbar ?

LG
Leon
 
@Grafik:
Qt
wxWidgets
GTK+ (rein C ohne C++-Klassenzeug)
wären drei Vertreter.

@cUrl:
Da verwechselst auch was :)
cUrl gibts sowohl als eigenständiges Programm
(das je nach Aufrufsparametern irgendwas cUrl-mäßiges macht)
als auch als Library zum Verwenden als Programmierer, als Teil vom eigenen Programm
(libcUrl)

Zeilen wie
curl -d "name=Rafael%20Sagula&phone=3320780"...
sind Beispiele für Aufrufe des alleinstehenden Programms, nicht die Programmiererversion.

Man könnte zwar das fertige Programm aus dem eigenen heraus aufrufen,
aber a) braucht es dafür min. mal eigene Befehle zum Programmaufruf.
Man kann nicht einfach so einen Programmnamen in den C++-Code schreiben,
als wäre es ein C++-Befehl.
b) Die Programmierversion ist flexibler zu verwenden.
...
 
:) Habe ich wohl wieder etwas verwechselt. Ich bin froh hier im Forum zu sein, wo ein die netten User, wie ihr, mir hilft mich zu verbessern etc.

Ich melde mich heute Abend nochmal, nachdem ich von der Schule zurück bin und es ausprobiert habe, werde ich euch kurz Feedback geben. Vorraussichtlich zwischen 19 bis 20 Uhr.

LG
Leon

Mir ist da was zwischen gekommen und war halt behindert zu antworten.

Ich habe mich nun mit dem ganzen auseinander gesetzt und habe wxwidgets installiert. zunächst Qt ist viel zu umfangreich für mein Vorhaben, ein weiterer Grund ist, dass Qt garnicht kompatiblel mit VS 2012 ist.

Nun zu cUrl, da muss ich mich noch ran setzten und die libcUrl suchen, da ich noch nicht fündig geworden bin.

Wenn ich hier gerade schreibe, ich habe ein Problem mit wxWidgets, denn ich habe es erfolgreich "gebuildet" debug sowie release. Aber wenn ich versuche es zu einzubinden. Sagt er mir die Quelle kann nicht gefunden werden.

Folgendes habe ich versucht: http://www.wxwidgets.org/docs/tutorials/hello.htm
 
Halfbax hat gesagt.:
Wenn ich hier gerade schreibe, ich habe ein Problem mit wxWidgets, denn ich habe es erfolgreich "gebuildet" debug sowie release. Aber wenn ich versuche es zu einzubinden. Sagt er mir die Quelle kann nicht gefunden werden.

Folgendes habe ich versucht: http://www.wxwidgets.org/docs/tutorials/hello.htm

Hallo,
sagt er dir denn welche Quelle? Falls es eine dll sein sollte, muss diese im gleichen Ordner wie die *.exe liegen, oder der Ordnerpfad der *.dll in dem Umgebungsvariablen des Systems.

Grüße,
Jennesta
 
Zurück