Papel de parede do Windows:não apenas BMPs?
-
09-06-2019 - |
Pergunta
Li em alguns lugares que o papel de parede da área de trabalho pode ser definido como um documento HTML.Alguém teve algum sucesso em alterá-lo programaticamente?
O seguinte trecho de VB6 me ajuda a configurar as coisas para BMPs, mas quando tento usá-lo para HTML, obtenho um belo fundo azul e nada mais.
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
Talvez haja alguma outra configuração necessária.Alguma ideia?
Solução
Não tenho certeza se existe uma API oficial para isso, mas se você quiser, pode usar o Sysinternal Monitor de Processo e veja quais chaves de registro são tocadas quando você define um plano de fundo HTML da área de trabalho por meio da interface do usuário.Então você só precisa repetir essas edições em seu código.No entanto, uma chamada de API seria muito preferível em termos de compatibilidade retroativa/posterior.
Outras dicas
Acho que você precisa ter certeza de que o "Active Desktop" está ativado.
Você pode tentar configurar HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\ForceActiveDesktopOn
para 1
(encontrado aqui).
Eu não tentei, então não há garantias.
Ok, descobri a resposta para minha pergunta, graças a egl1044 em Intercâmbio de Especialistas.Essencialmente, é preciso conversar com o objeto IActiveDesktop.Uma boa implementação disso, em VB6, pode ser encontrada em VB6 - JPEGs como papéis de parede (sem conversão).
Eu recomendo apenas o formato BMP.Não use o ActiveDesctop, pois seu PC funcionará lentamente depois disso.
Chegando perto: http://www.microsoft.com/technet/prodtechnol/windows2000serv/reskit/w2rkbook/gp.mspx?mfr=true
Mas acontece que eu estava me desviando do espaço político.O que eu realmente queria era definir a área de trabalho no espaço do usuário e deixar as configurações de política como estão.Algumas coisas úteis foram encontradas aqui: http://blogs.msdn.com/coding4fun/archive/2006/10/31/912569.aspx.
Esta não é a solução final, no entanto.O controle dos desktops HTML ainda está fora de alcance.
Parece que as configurações HTML estão armazenadas em HKCU\Software\Microsoft\Internet Explorer\Desktop\General.Porém, apenas armazená-los aqui não parece ser suficiente.Ainda preciso encontrar o mecanismo que permite ao Windows saber qual conjunto de valores de registro usar.