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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top