Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour à tous,
Est-ce que quelqu'un parmis vous a déjà utilisé l'API SystemParametersInfoA de la User32.dll pour changer le wallpaper de son windows ?
En appliquant "bêtement" ce que j'ai trouvé sur le net, cela ne fonctionne pas...
Voici ma déclaration de la fonction
Function uint SystemParametersInfo (uint uAction , uint uparam, string lpvParam, uint fuWinIni ) Library "User32.dll" alias for "SystemParametersInfoA"
et voici son appel
RegistrySet("HKEY_CURRENT_USER\Control Panel\Desktop","WallpaperStyle",ReguLong! ,1) RegistrySet("HKEY_CURRENT_USER\Control Panel\Desktop","TileWallpaper",ReguLong! , 1) ll_ret = SystemParametersInfo(SPI_SETDESKWALLPAPER,0, ls_fond, 3)
Cela ne plante pas, mais ça ne donne rien
Précision :
- la variable ls_fond contient le nom complet (avec le path) d'un fichier BMP
- la constante SPI_SETDESKWALLPAPER = 20
Hors ligne
oui, mais pas comme ca...
string ls_wallpaper ls_wallpaper = "C:\WINDOWS\pbadonf.bmp" SystemParametersInfoA( 20, 0, & ls_wallpaper, 1 )
Hors ligne
juste en regardant la base de registre il faut aussi modifier
HKEY_CURRENT_USER\Control Panel\Wallpaper
cela doit peut etre se faire automatiquement avec l'Api
Hors ligne
Hors ligne
pick ouic a écrit:
oui, mais pas comme ca...
Code: pb
string ls_wallpaper ls_wallpaper = "C:\WINDOWS\pbadonf.bmp" SystemParametersInfoA( 20, 0, & ls_wallpaper, 1 )
tu as déclaré l'API comment ?
Hors ligne
Ce ne serait pas comme ça par hasard?
(Désolé, je ne peux pas tester sur mon poste )
FUNCTION ulong SystemParametersInfo(ulong uAction,ulong uParam, any lpvParam,ulong fuWinIni) LIBRARY "user32.dll" ALIAS FOR "SystemParametersInfoA"
Sinon, je suppose que tu connais cette page, mais ça intéressera peut-être quelqu'un:
ici
Hors ligne
foon a écrit:
Ce ne serait pas comme ça par hasard?
(Désolé, je ne peux pas tester sur mon poste )Code: pb
FUNCTION ulong SystemParametersInfo(ulong uAction,ulong uParam, any lpvParam,ulong fuWinIni) LIBRARY "user32.dll" ALIAS FOR "SystemParametersInfoA"
Non pas mieux, j'avais déjà testé.
Y compris avec un ref any pour lpvParam...
Hors ligne
Bon j'ai trouvé
Function ulong SystemParametersInfoA (ulong uAction , ulong uparam, string lpvParam, ulong fuWinIni ) Library "User32.dll" Alias For "SystemParametersInfoA;ansi"
Il fallait ajouter ;ansi dans l'alias... J'y ai pensé un moment puis j'ai oublié de le faire...
Bon je me donne 1000 pépites
Hors ligne
Donc quand
shahin a écrit:
...
N'oubliez pas ces 3 informations essentielles :
- ...
- Powerbuilder Version (jusqu'au numéro de build)
- ...
je n'avais pas tout à fait tort.
J'avais déjà utilisé SystemParametersInfo, mais avec PB9, et sans l'information essentielle que tu utilise PB10 il était difficile de t'aider.
Pour future référence :
- Cette api ne gère que les bmp, et pas les jpg (ou seulement avec Vista)
- le chiffre 3 correspond à SPIF_UPDATEINIFILE (1) + SPIF_SENDWININICHANGE (2)
Il n'est pas nécessaire d'utiliser RegistrySet pour modifier le fond d'écran, mais pour modifier le style
- WallpaperStyle : 0 : centré, 1 : mosaïque, 2 : étiré
- TileWallpaper : 0 : normal, 1 : mosaïque
Hors ligne
Tu as raison Shahin. Pan sur mes doigts. Je n'ai pas dit que j'étais en 10.5 sur ce projet...
Pour le reste registry, type de fichier, etc. j'avais déjà les infos.
Mais merci à toi d'en avoir fait un résumé pour les futures recherches...
Hors ligne
Comme ça on a un topic de référence sur les fonds d'écrans
Hors ligne