Fondo de pantalla de Windows:¿No solo BMP?
-
09-06-2019 - |
Pregunta
He leído en un par de lugares que el fondo de pantalla del escritorio se puede configurar como un documento HTML.¿Alguien ha tenido éxito al cambiarlo mediante programación?
El siguiente fragmento de VB6 me ayuda a configurar cosas para BMP, pero cuando intento usarlo para HTML, obtengo un bonito fondo azul y nada más.
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
Quizás se requiera alguna otra configuración.¿Algunas ideas?
Solución
No estoy seguro de si existe una API oficial para esto, pero si tienes ganas de hacerlo, puedes usar la de Sysinternal. Monitor de proceso y vea qué claves de registro se tocan cuando configura un fondo de escritorio HTML a través de la interfaz de usuario.Entonces solo necesitarías repetir esas ediciones en tu código.Sin embargo, una llamada API sería mucho más preferible en términos de compatibilidad con versiones anteriores y posteriores.
Otros consejos
Creo que debes asegurarte de que "Active Desktop" esté activado.
Podrías intentar configurar HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\ForceActiveDesktopOn
a 1
(encontró aquí).
No lo he probado, así que no hay garantías.
Bien, descubrí la respuesta a mi pregunta, gracias a egl1044 en Intercambio de expertos.Básicamente, hay que hablar con el objeto IActiveDesktop.Una buena implementación de eso, en VB6, se puede encontrar en VB6: archivos JPEG como fondos de pantalla (sin conversión).
Recomiendo sólo el formato BMP.No utilice ActiveDesctop, porque su PC funcionará lentamente después de eso.
Acercarse: http://www.microsoft.com/technet/prodtechnol/windows2000serv/reskit/w2rkbook/gp.mspx?mfr=true
Pero resulta que me estaba desviando del tema de las políticas.Lo que realmente quería era configurar el escritorio en el espacio de usuario y dejar que se mantuvieran las configuraciones de política.Algunas cosas útiles se encontraron aquí: http://blogs.msdn.com/coding4fun/archive/2006/10/31/912569.aspx.
Sin embargo, ésta no es la solución final.El control de los escritorios HTML todavía está fuera de nuestro alcance.
Parece que la configuración HTML está almacenada en HKCU\Software\Microsoft\Internet Explorer\Desktop\General.Sin embargo, simplemente almacenarlos aquí no parece ser suficiente.Todavía necesito encontrar el mecanismo que le permita a Windows saber qué conjunto de valores de registro usar.