Seite 1 von 2

Webseitenquelltext herunterladen

Verfasst: 9. März 2009 13:10
von Paddre
Moinmoin.

Ich habe mir folgendes zur Aufgabe gesetzt. ich möchte einen täglich erscheinenden Web-Comic jeden tag als Desktophintergrund einrichten.

mein plan dazu: Seitenquelltext der internetseite auf das Vorkommen einer bestimmten URL überprüfen, Das Bild welches sich hinter der URL versteckt herunterladen und an einen bestimmten festgelegten Ort speichern.

Mein Problem:
Wie komme ich mit C++ an den Quelltext einer Seite ran?
Nachdem ich an der Konfrontation mit Sockets usw leicht gescheitert bin wollte ich mal schauen ob Qt so etwas kann.
QWebView scheint mir interessant, jedoch habe ich nirgends ein Beispiel zur Verwendung gefunden.

Gibt es eine Möglichkeit über Qt an den Quelltext einer Seite ranzukommen? Oder gibt es eine enifachere Möglichkeit mein Problem zu lösen?

Verfasst: 9. März 2009 13:45
von CLRS530
QHtml

Verfasst: 9. März 2009 13:54
von Paddre
Meinst du damit Quicktime HTML? oder gibt es eine Qt-Klasse die so heißt?

Der Assistant findet nichts unter QHTML und google ist da zwar sehr ergiebig aber kein ergebnis hat was mit dem zu tun was ich suche.

Bitte eine etwas auführlichere Antwort ;)

Verfasst: 9. März 2009 13:59
von AlphaWolf
Er meint wohl QHttp.

Verfasst: 9. März 2009 15:43
von Paddre
Puh brauch mal eben Hilfe bei ner ganz Grundlegenden Sache (muss dafür ja nicht extra n Thread öffnen)

Wie erstelle ich in VS2008 ein projekt, in dem ich auf Qt-Klassen zugreifen kann ohne eine GUI zu haben?

Einfaches include reicht ja nicht

Verfasst: 9. März 2009 15:45
von pfid
qmake -project

Verfasst: 9. März 2009 15:58
von Paddre
Also einfach ein normales leeres VS-Projekt erstellen und im Projektordner qmake -project aufrufen... kk mach ich morgen heute is erstmal feierabend :-P

Verfasst: 9. März 2009 17:58
von CLRS530
Oh ja, tut mir Leid. QHttp ist richtig :)

Verfasst: 10. März 2009 14:38
von Paddre
Habs jetzt nicht mit Qt-Klassen gelöst sondern mit der Win-API-Methode URLDownloadToFile ... klappt wonnerbäst, bis auf dass ich nicht weiß wie ich den Desktop aktualisieren kann nachdem ich das Desktophintergrundbild überschrieben hab

Verfasst: 10. März 2009 14:41
von CLRS530

Verfasst: 10. März 2009 15:11
von Paddre
Sehr gut besten dank :)
Problem ist, dass man auf den Desktop klicken muss damit das nach beenden des programms auch aktualisiert wird (wenn man folgende zeilen hinzufügt:

Code: Alles auswählen

keybd_event(VK_F5, 0, 0, 0);
keybd_event(VK_F5, 0, KEYEVENTF_KEYUP, 0);
Hat einer ne Ahnung wie ich den Focus auf den Desktop lege?

Verfasst: 10. März 2009 15:14
von CLRS530
Hast du das genau so:

Code: Alles auswählen

SystemParametersInfo(SPI_SETDESKWALLPAPER,0,bmp,SPIF_SENDCHANGE|SPIF_UPDATEINIFILE);
gemacht?
Ich kann mir kaum vorstellen, dass man noch weitere Aktualisierungen benötigt, um es sofort zu haben.

Kannst dein Programmquelltext übrigends mal anfügen wenn du lustig bist. Sowas würde mich auch interessieren :)

Verfasst: 10. März 2009 15:25
von Paddre
Ursprünglich hatte ich das neue Desktopbild aus dem Internet geladen, dieses in einen bestimmten ordner gepackt und einen bestimmten namen gegeben. Wenn ich es am nächsten Tag starte dann wird diese Datei wieder mit eienr gleichnamigen Datei überschrieben und nach ktualisierung ist das neue Bild auf dem Desktop zu sehen.

Mit folgendem Code und anderem Pfad als den des eingestellten Desktopbildes:

Code: Alles auswählen

SystemParametersInfo(SPI_SETDESKWALLPAPER,0,"D:\\comic.png",SPIF_SENDCHANGE|SPIF_UPDATEINIFILE);
(die Datei liegt auch wirklich dann in dem Ordner) wird der Hintergrund anscheinend nicht verändert (habe es mit einem Testbild versucht), weder so noch nach einem refresh des Desktops.

Die Funktion scheint also nicht ganz hinzuhauen.

Hier nochmal mein Code:

Code: Alles auswählen

URLDownloadToFile(NULL, temp, L"D:\\comic.png", NULL, NULL);
	SystemParametersInfo(SPI_SETDESKWALLPAPER,0,"D:\\comic.png",SPIF_SENDCHANGE|SPIF_UPDATEINIFILE);

keybd_event(VK_F5, 0, 0, 0);
keybd_event(VK_F5, 0, KEYEVENTF_KEYUP, 0);

Verfasst: 10. März 2009 15:32
von CLRS530
Das Problem ist, dass du eine BMP-Datei brauchen wirst. Du müsstest dieses also Konvertieren.
Versuch einmal es vorher manuell in eine bmp Datei zu wandeln.
Mit Qt sollte dir das dannach auch automatisch gelingen.

Verfasst: 10. März 2009 15:58
von Paddre
Ich mach mich mal auf die Suche.

Is halt ärgerlich weil die andere Methode funktioniert ja auch mit pngs...einziges problem ist halt nur dass ich nicht immer F5 am Anfang drücken will wenn ich den PC hochfahr :-D