Rechercher : dans
Par :

[C++] base de registre; Wallpaper

Dernière réponse le 24 nov 2008 à 22:57:15 Char Snipeur, le 16 nov 2008 à 22:27:07 
 Signaler ce message aux modérateurs

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.

#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 ...
/////////////////////////////////////////////// 

Salutation !
Char Snipeur
Configuration: Windows XP
Firefox 2.0.0.18

Meilleures réponses pour « [C++] base de registre; Wallpaper » dans :
[Windows XP] Structure de la base de registre Voir Qu'est-ce que la base de registre ? Accéder à la base de registre Comprendre son interface Colonne de gauche Les 5 clés racines Colonne de droite Quelques fonctionnalités du registre Exportation (sauvegarde d'une clé du...
[Windows] Nettoyer la base de registre avec RegCleaner VoirLa plupart des applications stockent des données de configuration dans la base de registre car il s'agit d'un espace de stockage de données facile à gérer et commun à tous les systèmes Microsoft Windows. Néanmoins, beaucoup d'entre-elles laissent...
Nettoyage de la base de registre VoirIl existe plusieurs outils permettant de faire le ménage dans la base de registre : JV16 PowerTools Regcleaner RegSeeker CCleaner Wise Registry Cleaner Voir également JV16 PowerTools Téléchargez JV16 Power Tools Fermer toutes les...
Base de Registre : Sauvegarde et Restauration VoirSauvegarder et Restaurer le Registre de Windows XP Voici 2 méthodes simple pour Sauvegarder et Restaurer le Registre de Windows XP. Exporter - Importer Sauvegarde et Restauration à l'aide de la console de récupération de Windows...
Microsoft Windows - La base de registre VoirQu'est-ce que la base de registres Dans la version 3.1 de Microsoft Windows, les applications installées étaient configurées vis-à-vis de Windows grâce à des fichiers de configuration (dont l'extension était .ini). D'autre part, deux fichiers de...

1

kilian, le 17 nov 2008 à 00:07:23

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)

SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, cheminVersFichier, 0)

http://msdn.microsoft.com/en-us/library/ms724947.aspx Le gâteau est un mensonge!

Répondre à kilian

2

niels, le 17 nov 2008 à 00:12:43

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

Répondre à niels

3

kilian, le 17 nov 2008 à 00:26:50

Ben essaie mon truc, on verra si ça marche pas :-) Le gâteau est un mensonge!

Répondre à kilian

4

Char Snipeur, le 17 nov 2008 à 10:06:07

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 :

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. Salutation !
Char Snipeur

Répondre à Char Snipeur

5

freddy, le 17 nov 2008 à 12:25:44

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.

Répondre à freddy

6

Char Snipeur, le 17 nov 2008 à 14:49:52

Puisque tu me le conseil, j'ai essayé d'aller voir. Mais je n'arrive même pas à trouver le site...
Quand je met l'adresse, soit il ne trouve rien soit il ouvre outlook (!) Salutation !
Char Snipeur

Répondre à Char Snipeur

8

kilian, le 17 nov 2008 à 17:21:09
  • +1

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... Le gâteau est un mensonge!

Répondre à kilian

7

fiddy, le 17 nov 2008 à 15:04:00

Lol, le site de pro ^^. No comment.
Sinon Char Snipeur,
Teste :

SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, cheminVersFichier, SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);

Je te promets rien, j'ai pas testé ^^.
Cdlt
Google is your friend

Répondre à fiddy

9

Char Snipeur, le 18 nov 2008 à 09:59:52

Merci pour vos réponse. Après quelques recherches, j'ai trouvé par l'intermédiaire du newsgroup (http://groups.google.com/group/fr.comp.os.ms-windows.progra­mmation/topics) :
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. Salutation !
Char Snipeur

Répondre à Char Snipeur

10

 Char Snipeur, le 24 nov 2008 à 22:57:15

J'en ai chier avec tout leur librairie, mais ça fonctionne !
Merci à tous. Salutation !
Char Snipeur

Répondre à Char Snipeur