Ordner Refresh o. Desktop aktualisieren
-
Is immer klasse dass man sowas erst erfährt wenns man eigentlich schon gelöst hat ^^
Aber ich schaus mir mal an
edit:
if (GetDesktopWindow() == 0) std::cout << "Desktop anzeigen fehlgeschlagen!" << std::endl; else std::cout << "Desktop aktualisieren" << std::endl; Sleep(500); keybd_event(VK_F5, 0, 0, 0); keybd_event(VK_F5, 0, KEYEVENTF_KEYUP, 0);zeigt mir zwar an dass es geklappt hat, rühren tut sich allerding nichts, und
if (BringWindowToTop(GetDesktopWindow()) == 0) std::cout << "Desktop anzeigen fehlgeschlagen!" << std::endl; else std::cout << "Desktop aktualisieren" << std::endl; Sleep(500); keybd_event(VK_F5, 0, 0, 0); keybd_event(VK_F5, 0, KEYEVENTF_KEYUP, 0);Sagt mir sogar dass es nicht geklappt hat...
is alles sicherlich eleganter aber wie gesagt... will nicht so recht klappen. Vielleicht mach ich auch einfach nur was falsch...in einem Beispiel im Inet hats jedenfalls geklappt

-
SystemParametersInfo mit SPI_SETDESKWALLPAPER.
-
Da das programm auf meinem PC zu Hause leider nicht funktioniert (zumindest Das ersetzen der Datei und aktualisieren) hab ich mich entschieden das doch anders zu machen.
Das Problem ist halt, dass sämtliche Funktionen die den Hintergrund festlegen .bmp's benötigen. Da das Bild was ich benutze jedoch ein .png ist muss ich dieses zunächst konvertieren.
Hat jemand von euch Erfahrung mit einer Bibliothek gemacht die sowas kann? Würd mich da lieber auf Meinungen von euch stützen als stumpf irgendwas runterzuladen. Hoffe ihr habt dafür Verständnis und kommt nicht gleich mit rtfm-Antworten.
Ich suche nebenbei weiter und probier rum aber wenn mir einer ne library empfehlen kann dann immer her damit
-
Warum machst Du nicht was sri sagt?
SystemParametersInfo mit SPI_SETDESKWALLPAPER.
Nimm zusätzlich noch SPIF_SENDWININICHANGE!
-
Weil MSDN sagt:
MSDN schrieb:
Sets the desktop wallpaper. The value of the pvParam parameter determines the new wallpaper. (-->) To specify a wallpaper bitmap, set pvParam to point to a NULL-terminated string containing the full path to the bitmap file (<--). Setting pvParam to "" removes the wallpaper. Setting pvParam to SETWALLPAPER_DEFAULT or NULL reverts to the default wallpaper.
The pvParam parameter can specify a .jpg file.
Windows Server 2003 and Windows XP/2000: The pvParam parameter cannot specify a .jpg file.
Da steht doch drin, dass man den Pfad zu einem Bitmap-File angeben muss und dass jpg's unter XP nicht verwendet werden können (was mir eh nix bringen würde)
Oder hab ich das einfach falsch verstanden?
Edit: habs mal ausprobiert. Er gibt mir bei folgendem Code aus dass er das Bild nicht setzen kann:
if (SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "D:\\Backgroundimage\\comic.png", SPIF_SENDWININICHANGE) == 0) { std::cout << "Konnte Desktopbild nicht setzen!" << std::endl; }else std::cout << "Desktopbild wurde gesetzt!" << std::endl;statt SPIF_SENDWININICHANGE kann ich (laut MSDN) doch auch SPIF_SENDCHANGE nehmen oder?
-
... und?
Dann mach es wie die Windows Systemsteuerung auch: Konvertiere Deine Datei als BMP und OK...
-
Hört mir eigentlich niemand zu?

Ich schrieb:
Das Problem ist halt, dass sämtliche Funktionen die den Hintergrund festlegen .bmp's benötigen. Da das Bild was ich benutze jedoch ein .png ist muss ich dieses zunächst konvertieren.
Hat jemand von euch Erfahrung mit einer Bibliothek gemacht die sowas kann? Würd mich da lieber auf Meinungen von euch stützen als stumpf irgendwas runterzuladen.
...
Wenn ichs manuell mache hat das Programm wenig Sinn...dann kann ichs auch gleich selbst runterladen.
-
Ja ich lese. Hören kann ich hier nix...
OK. Dann nochmal. Intern verwendet XP nunmal einfach ein BMP...
Angekommen? Was bleibt Dir also, wenn Du das Wallpaper ändern willst?Die Methode dazu ist dokumentiert und lautet:
SystemParametersInfo mit SPI_SETDESKWALLPAPER + SPIF_SENDWININICHANGE.Ansonsten schau Dir mal WM_WININICHANGE an und schau mal mit dem Spy nach, was als lParam versendet wird um detailiert einen Hint geben zu können.
-
Yes Sir alles angekommen. Hoffe ich ^^
Ich hänge atm noch etwas beim Konvertieren ( was am Anfang dieses tages ja auch mein Problem war)
Habe mir die DevIL-Library runtergeladen, mit der ich die png öffne und als gleichnamige bmp speichern will.
Ich habe nun seit 1,5 Stunden ca rumprobiert ein Bild zu öffnen... aber ich bekomme es einfach nicht hin.
success = ilLoadImage(L"D:/steffens_lokal/Backgroundimage/comic.png"); if (success) { std::cout << "Bild zum konvertieren geladen\n" << "Konvertiere Bild" << std::endl; success = ilConvertImage(IL_PNG, IL_BMP); if(success) std::cout << "Bild Konvertiert!" << std::endl; else std::cout << "Konnte Bild nicht Konvertieren!" << std::endl; }else std::cout << "konnte Das Bild nicht zum konvertieren laden!" << std::endl;Wenn jemand schonmal mit DevIL gearbeitet hat würde mir das schon sehr hefen. Ansonsten mach ich mich mal eben auf die Suche was man da machen kann.
-
Was genau funktioniert beim Laden nicht? Und hilft das hier evtl weiter?
edit: Oder sonst vielleicht mit GDI+ versuchen?
-
Wenn ich am anfang
#undef _UNICODEhinzufüge dann klappts (zumindest das öffnen
mal sehen wies weitergehtedit: Oder sonst vielleicht mit GDI+ versuchen?
Ich würde gerne erstmal bei DevIL bleiben...das war so ein Kampf das vernünftig zu integrieren und zu schade als dass ich jetzt einfach was anderes probier was womöglich wieder nicht funktioniert

Wenns gar nicht mehr geht und wir hier wirklich nicht weiterkommen dann können wa darüber sprechen ^^
-
So nun läufts aber. Ohne key_bd's usw alles tutti
Wer interesse am Code hat kann mich ruhig anschreibenLetzte frage: wie bekomme ich das hin eine .exe zu erstellen die ohne die DevIL.dll im selben Ordner auskommt?
Atm muss man mit der .exe ausm Debug-Ordner jedes Mal die DevIL.exe mitkopieren