我在几个地方读过桌面壁纸可以设置为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
也许还需要一些其他设置。有什么想法吗?
答案 0 :(得分:2)
我认为你需要确保“Active Desktop”已开启。
您可以尝试将HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\ForceActiveDesktopOn
设置为1
(找到here)。
我没有尝试过,所以没有保证。
答案 1 :(得分:2)
好的,我已经找到了我的问题的答案,感谢Experts Exchange上的egl1044。基本上,必须与IActiveDesktop对象进行通信。在VB6中,可以在VB6 - JPEGs as wallpapers (without conversion)找到一个很好的实现。
答案 2 :(得分:1)
我不确定是否有这样的官方API,但如果您已经设置了它的心脏,您可以使用Sysinternal的Process Monitor并查看通过以下方式设置HTML桌面背景时触摸的注册表项UI。然后,您只需要在代码中重复这些编辑。但是,就向后/向前兼容性而言,API调用将更为可取。
答案 3 :(得分: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知道要使用哪组注册表值的机制。
答案 4 :(得分:0)
我只推荐BMP格式。不要使用ActiveDesctop,因为PC之后会很慢。