Vb6 Windows墙纸:不仅仅是BMP?

Vb6 Windows墙纸:不仅仅是BMP?,vb6,registry,desktop-wallpaper,Vb6,Registry,Desktop Wallpaper,我在几个地方读到过,桌面壁纸可以设置为HTML文档。是否有人成功地通过编程更改了它 下面的VB6片段帮助我设置BMP,但当我尝试将其用于HTML时,我得到了一个漂亮的蓝色背景,没有其他东西 Dim reg As New StdRegistry Public Function CurrentWallpaper() As String CurrentWallpaper = reg.ValueEx(HKEY_CURRENT_USER, "Control Panel\Desktop", "Wa

我在几个地方读到过,桌面壁纸可以设置为HTML文档。是否有人成功地通过编程更改了它

下面的VB6片段帮助我设置BMP,但当我尝试将其用于HTML时,我得到了一个漂亮的蓝色背景,没有其他东西

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

也许还需要其他一些设置。有什么想法吗?

我想你需要确保“活动桌面”已打开

您可以尝试将
HKCU\Software\Microsoft\Windows\CurrentVersion\Policys\Explorer\ForceActiveDesktopOn
设置为
1
(已找到)

我还没有试过,所以不能保证。

越来越近:
但事实证明,我在政策领域偏离了方向。我真正想要的是在用户空间中设置桌面,并让策略设置保持不变。这里找到了一些有用的东西:

然而,这并不是最终的解决方案。对HTML桌面的控制仍然遥不可及。

HTML设置似乎存储在HKCU\Software\Microsoft\Internet Explorer\Desktop\General中。然而,仅仅将它们存储在这里似乎还不够。我仍然需要找到让Windows知道要使用哪一组注册表值的机制。

我只推荐BMP格式。不要使用ActiveDesctop,因为在那之后,你的电脑会工作得很慢。

我不确定是否有官方的API用于此,但如果你一心想用它,你可以使用Sysinternal,看看当你通过UI设置HTML桌面背景时,会碰到哪些注册表项。然后您只需要在代码中重复这些编辑。不过,就向后/向前兼容性而言,API调用更可取。

好的,多亏了上的egl1044,我找到了问题的答案。本质上,必须与IActiveDesktop对象对话。在VB6中有一个很好的实现,可以在中找到。

是的,我试过了。我仍然在浏览大量的数据,试图找出什么起作用。