Papier peint Windows: pas seulement des BMP?
-
09-06-2019 - |
Question
J'ai lu à quelques endroits que le papier peint du bureau peut être défini sur un document HTML. Quelqu'un a-t-il déjà réussi à le modifier par programmation?
L'extrait suivant de VB6 m'aide à configurer les choses pour les fichiers BMP, mais lorsque j'essaie de l'utiliser pour le format HTML, j'obtiens un joli fond bleu et rien d'autre.
Dim reg As New StdRegistry
Public Function CurrentWallpaper() As String
CurrentWallpaper = reg.ValueEx(HKEY_CURRENT_USER, "Control Panel\Desktop", "Wallpaper", REG_SZ, "")
End Function
Public Sub SetWallpaper(cFilename As Variant)
reg.ClassKey = HKEY_CURRENT_USER
reg.SectionKey = "Control Panel\Desktop"
reg.ValueKey = "Wallpaper"
reg.ValueType = REG_SZ
reg.Default = ""
reg.Value = cFilename
End Sub
Public Sub RefreshDesktop()
Dim oShell As Object
Set oShell = CreateObject("WScript.Shell")
oShell.Run "%windir%\System32\RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters", 1, True
End Sub
Peut-être existe-t-il un autre paramètre requis. Des idées?
La solution
Je ne sais pas s'il existe une API officielle pour cela, mais si vous avez le coeur à la page, vous pouvez utiliser le Moniteur de processus et découvrez les clés de registre touchées lorsque vous définissez un arrière-plan de bureau HTML via l'interface utilisateur. Ensuite, il vous suffira de répéter ces modifications dans votre code. Cependant, un appel API serait de loin préférable en termes de compatibilité ascendante / descendante.
Autres conseils
Je pense que vous devez vous assurer que "Active Desktop" " est activé.
Vous pouvez essayer de définir HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Policies \ Explorer \ ForceActiveDesktopOn
sur 1
(trouvé ici ).
Je ne l'ai pas essayé, donc aucune garantie.
D'accord, j'ai découvert la réponse à ma question grâce à egl1044 sur Echange d'experts . Essentiellement, il faut parler à l'objet IActiveDesktop. Une bonne mise en œuvre de cela, en VB6, peut être trouvée à l'adresse VB6 - les fichiers JPEG en tant que fonds d'écran (sans conversion) .
Je recommande uniquement le format BMP. N'utilisez pas ActiveDesctop, car votre PC fonctionnera lentement par la suite.
Se rapprocher: http: // www.microsoft.com/technet/prodtechnol/windows2000serv/reskit/w2rkbook/gp.mspx?mfr=true
Mais il s’avère que je me suis égaré dans l’espace des politiques. Ce que je voulais vraiment, c’était de définir le bureau dans l’espace utilisateur et de laisser les paramètres de stratégie conservés. Des informations utiles ont été trouvées ici: http: //blogs.msdn .com / coding4fun / archive / 2006/10/31 / 912569.aspx .
Cependant, ce n'est pas la solution finale. Le contrôle des bureaux HTML est toujours hors de portée.
Il semble que les paramètres HTML soient stockés dans HKCU \ Software \ Microsoft \ Internet Explorer \ Bureau \ Général. Cependant, les stocker ici ne semble pas être suffisant. J'ai encore besoin de trouver le mécanisme qui permet à Windows de savoir quel jeu de valeurs de registre utiliser.