[C++] base de registre; Wallpaper
Résolu
Char Snipeur
Messages postés
9813
Date d'inscription
Statut
Contributeur
Dernière intervention
-
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Voilà, j'ai le programme suivant, que j'ai en grande partie récupérer sur un site. Ce programme est sensé changé le fond d'écran de XP. Le problème c'est qu'il ne fonctionne pâs.
Pourtant, en allant dans les propriété d'affichage il semble bien mis à jour...
Donc, si vous pouviez m'aider.
Voilà, j'ai le programme suivant, que j'ai en grande partie récupérer sur un site. Ce programme est sensé changé le fond d'écran de XP. Le problème c'est qu'il ne fonctionne pâs.
Pourtant, en allant dans les propriété d'affichage il semble bien mis à jour...
Donc, si vous pouviez m'aider.
#include <windows.h> #include <windowsx.h> #include <stdio.h> //#include "project1.h" #include <time.h> #define CA_FOIRE 0 #define C_BON 1 class Programme { HINSTANCE Hinst; LPSTR NomFic; public: Programme(HINSTANCE); BOOL ChargeAleatoire(); BOOL RemplaceRegistre(); int Msg( LPSTR fmt, ... ); }; Programme *CProg; int WINAPI WinMain(HINSTANCE, HINSTANCE Hinst, LPSTR, int) { BOOL Err=FALSE; CProg = new Programme (Hinst); CProg->ChargeAleatoire(); CProg->RemplaceRegistre(); delete(CProg); return Err; } Programme :: Programme (HINSTANCE Hinstance) { Hinst=Hinstance; NomFic=(LPSTR) malloc(100); return; } BOOL Programme :: ChargeAleatoire(void) { int a,i,Nb_Fonds; time_t tim; char Buffer[512]; FILE *f=fopen(".\\index.dat","rt"); if (!f) return CA_FOIRE; fscanf(f,"%d",&Nb_Fonds);printf("il y a %d fichiers\n",Nb_Fonds); // fct aléatoire artisanale // juste pour le fun a = (int) time(&tim); a%=Nb_Fonds; a++; for (i=0;i<a;i++) { fscanf(f,"%s",Buffer); if (feof(f)) return CA_FOIRE; } strcpy(NomFic,Buffer); printf("nomfic : %s",Buffer); return C_BON; } BOOL Programme :: RemplaceRegistre(void) { HKEY hSoftKey,hCompanyKey; DWORD dw; RegOpenKeyEx(HKEY_CURRENT_USER, "Control Panel\\Desktop", 0, KEY_WRITE|KEY_READ, &hSoftKey); RegSetValueEx(hSoftKey,"WallPaper", NULL, REG_SZ, (LPBYTE)NomFic, strlen(NomFic)*sizeof(char));//(5+1)*sizeof(TCHAR)); RegCloseKey(hSoftKey); return C_BON; } int Programme :: Msg( LPSTR fmt, ... ) { char buff[256]; va_list va; va_start(va, fmt); wvsprintf(buff, fmt, va); va_end(va); lstrcat(buff, "\r\n"); MessageBox( NULL, buff, "Ced Message", MB_OK ); return C_BON; } /////////////////////////////////////////////// /// index.dat /// 2 /// c:\blabla\fonds\image1.bmp /// c:\blabla\fonds\image2.bmp // et ainsi de suite ... ///////////////////////////////////////////////
A voir également:
- [C++] base de registre; Wallpaper
- Base de registre - Guide
- Formules mathématiques de base - Télécharger - Études & Formations
- Formules excel de base - Guide
- Lively wallpaper - Télécharger - Personnalisation
- Gigaset ne reconnait plus sa base - Forum telephonie fixe
7 réponses
Salut Char,
Cette fonction est directe pour changer l'arrière plan. Elle force windows la mise à jour de l'arrière plan (et j'imagine que pour la mémoriser il la place aussi dans la base)
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-systemparametersinfoa?redirectedfrom=MSDN
Cette fonction est directe pour changer l'arrière plan. Elle force windows la mise à jour de l'arrière plan (et j'imagine que pour la mémoriser il la place aussi dans la base)
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, cheminVersFichier, 0)
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-systemparametersinfoa?redirectedfrom=MSDN
Ce code est vraiment n'importe quoi.
On ne copie*** jamais *** ce qu'on trouve sur les sites !
Il n'y a que des aneries, forcément
Pour les 2 méthodes officeilles, demander chez les pros :
news://194.177.96.26/fr.comp.os.ms-windows.programmation
On ne copie*** jamais *** ce qu'on trouve sur les sites !
Il n'y a que des aneries, forcément
Pour les 2 méthodes officeilles, demander chez les pros :
news://194.177.96.26/fr.comp.os.ms-windows.programmation
Merci.
Niel, je vais suivre ton conseil, je ne vais pas recopié le lien que tu donnes.
Merci Killian, je testerai ça dès que possible. Pour utiliser ta onction, je suppose que je remplace toutes mes fonctions Reg..., et ça devrais aller.
Par contre, dans ton lien, il y a :
Niel, je vais suivre ton conseil, je ne vais pas recopié le lien que tu donnes.
Merci Killian, je testerai ça dès que possible. Pour utiliser ta onction, je suppose que je remplace toutes mes fonctions Reg..., et ça devrais aller.
Par contre, dans ton lien, il y a :
The pvParam parameter can specify a .jpg file. Windows Server 2003 and Windows XP/2000: The pvParam parameter cannot specify a .jpg file.Je trouve étonnant de ne pas pouvoir spécifier un .jpg avec XP, alors qu'il se supporte plutôt bien comparé à 98. Si tu as une réponse sur cette remarque de Microsoft, elle est la bien venu, mais je testerai avec un .jpg pour être sur.
On peut mettre des jpeg, mais pas comme ça.
Comme dit, voir chez les pros de fr.comp.os.ms-windows.programmation
ou tout a été expliqué en long, large et travers depuis... des dizaines d'années.
Comme dit, voir chez les pros de fr.comp.os.ms-windows.programmation
ou tout a été expliqué en long, large et travers depuis... des dizaines d'années.
C'est un newsgroup, il te faut un client de messagerie pour y accéder (et il faut aussi que ton FAI
te procure un serveur nntp, ça se fait de moins en moins).
Note qu'il est vrai que les newsgroups sont réputés pour heberger des spécialistes. Notamment les comp.os et consoeurs. Ceci dit j'aime pas trop la mentalité d'arriver sur un forum et de dire: ici c'est nul, allez voir chez les pros. Est ce que moi je viens chez vous en crachant sur vos tapis et en pérorant que le voisin fait du meilleur café?
De toutes façons on y gagne autant à chercher par nous même...
te procure un serveur nntp, ça se fait de moins en moins).
Note qu'il est vrai que les newsgroups sont réputés pour heberger des spécialistes. Notamment les comp.os et consoeurs. Ceci dit j'aime pas trop la mentalité d'arriver sur un forum et de dire: ici c'est nul, allez voir chez les pros. Est ce que moi je viens chez vous en crachant sur vos tapis et en pérorant que le voisin fait du meilleur café?
De toutes façons on y gagne autant à chercher par nous même...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Lol, le site de pro ^^. No comment.
Sinon Char Snipeur,
Teste :
Je te promets rien, j'ai pas testé ^^.
Cdlt
Sinon Char Snipeur,
Teste :
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, cheminVersFichier, SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
Je te promets rien, j'ai pas testé ^^.
Cdlt
Merci pour vos réponse. Après quelques recherches, j'ai trouvé par l'intermédiaire du newsgroup (https://groups.google.com/forum/#!forum/fr.comp.os.ms-windows.programmation :
http://glkake.free.fr/wallpaperchange/
Qui donne un fichier source qui doit fonctionner. Dans le cas d'un jpg, en fait le gars le transforme en bmp et le copie dans WINDIR. Et la fonction SystemParametersInfo() pour finir. Je teste, si ça fonctionne je met résolu, sinon, de nouvelles questions.
http://glkake.free.fr/wallpaperchange/
Qui donne un fichier source qui doit fonctionner. Dans le cas d'un jpg, en fait le gars le transforme en bmp et le copie dans WINDIR. Et la fonction SystemParametersInfo() pour finir. Je teste, si ça fonctionne je met résolu, sinon, de nouvelles questions.