Position Wallpaper

Seth77 Messages postés 572 Date d'inscription mardi 30 avril 2002 Statut Membre Dernière intervention 4 mai 2020 - 18 avril 2005 à 17:27
Seth77 Messages postés 572 Date d'inscription mardi 30 avril 2002 Statut Membre Dernière intervention 4 mai 2020 - 19 avril 2005 à 15:40
Salut



Comment faire pour modifier la position du fond d ecran ?? (Etirer, normal, mosaïque)



Merci d avance !

Herve

18 réponses

Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
18 avril 2005 à 18:15
ça se trouve dans la Base de Registre.

HKEY_CURRENT_USER\Control Panel\Desktop\WallpaperStyle
avec pour valeur de chaîne 0 (Normal), 1 (Centrer), 2 (Etirer)


HKEY_CURRENT_USER\Control Panel\Desktop\TileWallpaper
avec pour valeur de chaîne 0 (Mosaïque) ou 1 (Normal)

ça c'est les valeurs théoriques, la réalité est tout autre, pour Windows XP en tout cas
Centré: Wallpaper 0 TileWallpaper 0Mosaïque: Wallpaper 0 TileWallpaper 1 Strech: Wallpaper 2 TileWallpaper 0

Daniel
0
Seth77 Messages postés 572 Date d'inscription mardi 30 avril 2002 Statut Membre Dernière intervention 4 mai 2020 1
18 avril 2005 à 18:34
Ok j ai deja essaye cela ....

mais comment faire pour faire un refresh du fond d ecran pour qu il
prenne en compte les changement, parce que en refaisant un
SystemParametersInfo il me retourne une erreur .

Herve
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
18 avril 2005 à 18:41
SystemParametersInfo marche bien pourtant, inutile de redémarrer la machine.

sFile est le nom complet du fichier BMP

SystemParametersInfo 20, 0&, ByVal xFile, &H2 Or &H1

Daniel
0
Seth77 Messages postés 572 Date d'inscription mardi 30 avril 2002 Statut Membre Dernière intervention 4 mai 2020 1
18 avril 2005 à 18:55
ok

faudras que je reessaie



merci

Herve
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Seth77 Messages postés 572 Date d'inscription mardi 30 avril 2002 Statut Membre Dernière intervention 4 mai 2020 1
18 avril 2005 à 21:55
marche pas .....je ne comprends pas



RetVal = SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, WALLPAPER_BMP, 1)



retval est toujours a 0 !







Herve
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
18 avril 2005 à 22:23
je suppose que tu as le chemin complet dans WALLPAPER_BMP, les paramètres &H1 et &H2 je sais pas s'ils sont nécessaires, le plus important c'est le Byval (le deuxième n'est pas obligatoire s'il est dans la déclaration).

Const SPIF_UPDATEINIFILE = &H1
Const SPIF_SENDWININICHANGE = &H2


Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByVal<STRIKE> </STRIKE>
lpvParam As Any, ByVal fuWinIni As Long) As Long

RetVal = SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, Byval WALLPAPER_BMP, SPIF_UPDATEINIFILE or SPIF_SENDWININICHANGE)

Daniel
0
Seth77 Messages postés 572 Date d'inscription mardi 30 avril 2002 Statut Membre Dernière intervention 4 mai 2020 1
18 avril 2005 à 22:45
en mettant :

RetVal = SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, ByVal WALLPAPER_BMP, 1)



ca a l air de marcher !!!

j ai pas compris la !!!! Pourquoi ici le Byval est necessaire alors qu autre part dans mon app il n est pas necessaire??



le pire c qu il n y avait pas moyen de recupere le type d erreur quand ce ne marchais pas.



Encore merci !


Herve
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
18 avril 2005 à 23:13
"autre part" ça veut dire quoi, comment tu utilises SystemParametersInfo autrement ?

il y a 2 cas ou tu passes la chaine par Byval dans ce cas VB crée une copie de la chaîne et renvoie un pointeur, sinon tu passes directement un pointeur qui pointe sur la chaine, mais ça risque de ne pas marcher parce que la chaîne sera en Unicode et ...
bref, bien compliqué tout ça, le principal c'est que ça marche...

une question: combien tu peux mettre de fichiers dans ton Wallpaper ?

Daniel
0
Seth77 Messages postés 572 Date d'inscription mardi 30 avril 2002 Statut Membre Dernière intervention 4 mai 2020 1
18 avril 2005 à 23:25
en fait j utilise "SystemParametersInfo " une fois pour changer le fond d ecran, et la ca marche sans le ByVal.

La ou j avais un probleme c est lorsque je voulais changer la position du fond d ecran.



Sinon dans mon prog Wallpaper , je peux mettre un nombre "illimite" de
fichier. j ai reussis a faire un programme qui charge rapidement ma
tres grande liste de fond d ecran (+ de 13000)!

je travaille en ce moment pour essaye de limiter l occupation en memoire du prog !

InMem Kb : 11220

Private Kb : 14586

Total Kb : 68384



un peu beaucoup non ?


Herve
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
18 avril 2005 à 23:38
j'en ai plus de 18000 et je sais pas combien j'ai d'occupation mémoire
le fichier fait que 300k, c'est la ListView qui doit prendre de la place.

en testant vite fait, je compte une vingtaine de Mo utilisé.

pour le ByVal j'en ai aucune idée, pourquoi ça marcherait sans et après avec, L'API étant le même, ça devrait réagir de la même façon.

comment tu changes la position avec SystemParametersInfo ?

Daniel
0
Seth77 Messages postés 572 Date d'inscription mardi 30 avril 2002 Statut Membre Dernière intervention 4 mai 2020 1
18 avril 2005 à 23:44
Ben en fait je fais les modifs dans la base de registre et je fais reaffiche le fond d ecran avec SystemParametersInfo pour obtenir un refresh.



tu as aussi fais un programmes pour les fonds d ecrans ?


Herve
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
18 avril 2005 à 23:57
ça doit être le même "SystemParametersInfo" si c'est pour afficher le même fichier, donc avec Byval non ?
j'ai pas inclus la routine pour centrer les images, ça devrait être fait depuis longtemps mais puisque je n'utilise plus que mon programme, il reste sur la position "center" et n'en bougera plus, surtout pas "strech" affreux !

mon Wallpaper a aussi un nombre illimité d'images, les répertoires sont dans un fichier à part, que je modifie à la main pour l'instant, j'ai abandonné
le browse répertoire et le multisélection, trop long, un double click sur le nom du répertoire et il se met à jour automatiquement, ça prend 2 secondes par répertoire.
il fait aussi Screen Saver, au bout d'un moment, si pas d'activité il se déclenche, ferme toutes les fenêtres, et c'est parti pour le diaporama, réglage de 10 secondes à 23H59m59s

Daniel
0
Seth77 Messages postés 572 Date d'inscription mardi 30 avril 2002 Statut Membre Dernière intervention 4 mai 2020 1
19 avril 2005 à 00:04
En fait dans mon prog je mets la position en fonction de la taille de l image....

pour les images inferieurs a 640*480 -> Mosaique

pour les images avec un ratio de 4/3 ou 5/4 -> Etirer

sinon c est centrer !



sinon pour les fichiers , je garde le repertoire principale, et ensuite
je scanne tous les sous-repertoires pour faire ma liste de fichier !


le plus embetant est de classer les fichiers et de "detecter" les doublons !


Herve
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
19 avril 2005 à 00:22
j'ai laissé "center" pour toutes les images qui sont cadrées à la taille de l'écran soit en hauteur, soit en largeur, c'est suffisant pour moi.

pour les doublons, je trie sur le nom et je fait une recherche dichotomique et ensuite je vérifie si le répertoire est le même ou pas avec un autre boucle, mais comme le programme est en sans cesse évolution, je vais surement encore optimisé avec une colonne cachée qui contiendra le numéro de répertoire + le nom, et une seule boucle suffira.
sinon pendant la recherche, le Sorted est mis sur False, et le Enabled également, ça va très vite, 15 boucles de recherche pour 18000.

sais tu que quand tu modifie le tri, la colonne et le type ascendant ou descendant, le tri est fait 2 fois et ça prend 2 fois plus de temps.
sais tu aussi que quand le tri est le même, même colonne et même type, cela prend également du temps alors qu'il n'y a rien à faire ?
d'où l'utilité de tester si le tri est nécessaire avant de le lancer, et de mettre le Sorted à False, de modifier les paramètres de tri, et ensuite de remettre à True.

Daniel
0
Seth77 Messages postés 572 Date d'inscription mardi 30 avril 2002 Statut Membre Dernière intervention 4 mai 2020 1
19 avril 2005 à 00:32
Ah oui c bon a savoir !



y aurait il moyen d avoir un exemplaire de ton prog ?

Herve
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
19 avril 2005 à 01:26
va voir dans ta boîte

Daniel
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
19 avril 2005 à 15:29
j'ai réussi à faire marcher ton code.
quelques problèmes de démarrage avec un fichier vide mais vite résolu.la Progressbar n'accepte pas Max 0, j'ai mis un test pour ne pas faire si NbFichier 0. et dans le fichier ini pour DernierRep à la place de D:\ j'ai mis C:\ avec un répertoire vide.
sinon dans l'ensemble, très bien écrit avec des commentaires et tout, chose que j'ai pas faite.
j'ai pas tout regardé en détail mais j'ai vu des fonctions comme MajtoMin et MintoMaj, elles sont pas utilisées dans le projet, mais est-ce que Ucase$ et Lcase$ ne suffisent pas ?
est-ce qu'on peut modifier la péride d'affichage des images ?

Daniel
0
Seth77 Messages postés 572 Date d'inscription mardi 30 avril 2002 Statut Membre Dernière intervention 4 mai 2020 1
19 avril 2005 à 15:40
Ok...



c vrai que je n utilise pas MajtoMin et MintoMaj, oui
Ucase$ et Lcase$ suffiraient
. En
fait elle font partie d un ensemble de fonction qui sont dans le
fichier BAS , et que je recopie dans les projets en fonction de mes
besoins.



pour le moment la periode d affichage n est que pour chaque heure fixe,
mais je compte mettre plus d options (tous les jours, toutes les x
minutes, etc ....)



thx


Herve
0
Rejoignez-nous