3

我在几个地方读过桌面壁纸可以设置为 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

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

4

5 回答 5

2

我认为您需要确保“活动桌面”已打开。

您可以尝试设置HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\ForceActiveDesktopOn1(在此处找到)。

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

于 2008-09-17T05:40:20.490 回答
2

好的,感谢Experts Exchange上的 egl1044,我找到了问题的答案。本质上,必须与 IActiveDesktop 对象对话。在 VB6 中,一个很好的实现可以在VB6 - JPEGs as wallpapers (without conversion)中找到。

于 2008-09-18T01:59:16.457 回答
1

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

于 2008-09-17T15:28:28.423 回答
0

越来越近:http ://www.microsoft.com/technet/prodtechnol/windows2000serv/reskit/w2rkbook/gp.mspx?mfr=true


但事实证明,我在政策领域偏离了方向。我真正想要的是在用户空间中设置桌面并让策略设置保持不变。在这里找到了一些有用的东西:http: //blogs.msdn.com/coding4fun/archive/2006/10/31/912569.aspx

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


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

于 2008-09-17T14:37:58.717 回答
0

我只推荐 BMP 格式。不要使用 ActiveDesctop,因为之后您的 PC 会运行缓慢。

于 2008-09-17T15:18:22.380 回答