PDA

View Full Version : [C++] Cambiare Sfondo Desktop


skeleton
08-05-2011, 16:36
Salve a tutti,
seguendo il materiale trovato su google ho scritto un programma del genere per cambiare sfondo al desktop:
#include <windows.h>
#include <iostream>
using namespace std;

main(){
HKEY hKey;
TCHAR key_name[]= "ConvertedWallpaper"; //Percorso chiave di registro
BYTE valKey[] = "C:\\immagine.jpg"; //Valore della chiave da creare

RegOpenKey(HKEY_CURRENT_USER, "Control Panel\\Desktop", &hKey);

RegSetValueEx(hKey, key_name, 0, REG_SZ, valKey, sizeof(valKey));

RegCloseKey(hKey);
cin.get();
}

Il cambio della chiave di registro avviene correttamente, ma non l'effettivo cambiamento dello sfondo.

Sareste in grado di aiutarmi?

Grazie mille in anticipo.

Efem
09-05-2011, 14:27
Hai provato a modificare la chiave questa chiave

HKEY_CURRENT_USER\Control Panel\Desktop\Wellappear


invece di ConvertedWallpaper?

skeleton
09-05-2011, 16:03
Avevo già provato e non funziona.
Ho scelto di modificare la chiave "ConvertedWallpaper" perchè sostituendo manualmente lo sfondo l'unica chiave che viene modificata è la suddetta.

è come se fosse bisogno di un refresh della schermata...

tomminno
10-05-2011, 08:25
Avevo già provato e non funziona.
Ho scelto di modificare la chiave "ConvertedWallpaper" perchè sostituendo manualmente lo sfondo l'unica chiave che viene modificata è la suddetta.

è come se fosse bisogno di un refresh della schermata...

Si c'è bisogno di aggiornare il desktop, però ora non ho il codice sotto mano.

giangian2
10-05-2011, 09:32
Dai un'occhiata qui (http://msdn.microsoft.com/en-us/library/ms724947).

La chiamata dovrebbe essere:


SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "c:\\tua_immagine.jpg" , SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE );


ciao

skeleton
10-05-2011, 16:47
grazie mille, avevo già trovato quella funzione, ma non avevo capito che funziona solo con le immagini .bmp.


Ancora grazie.