Seth77
Messages postés572Date d'inscriptionmardi 30 avril 2002StatutMembreDernière intervention 4 mai 2020
-
18 avril 2005 à 17:27
Seth77
Messages postés572Date d'inscriptionmardi 30 avril 2002StatutMembreDerniè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)
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 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
Seth77
Messages postés572Date d'inscriptionmardi 30 avril 2002StatutMembreDernière intervention 4 mai 20201 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 .
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 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).
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)
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 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 ?
Seth77
Messages postés572Date d'inscriptionmardi 30 avril 2002StatutMembreDernière intervention 4 mai 20201 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 !
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 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
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 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.
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 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 ?
Seth77
Messages postés572Date d'inscriptionmardi 30 avril 2002StatutMembreDernière intervention 4 mai 20201 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 ....)