2008-09-17 21 views
3

我已经阅读了几个地方的桌面墙纸可以设置为HTML文档。有没有人有任何成功改变它编程?Windows壁纸:不只是BMP?

下面的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 

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

回答

1

我不确定这是否有一个官方API,但如果你有心设置它,你可以使用Sysinternal的Process Monitor,并通过UI设置HTML桌面背景时看看触摸了哪些注册表键。那么你只需要在代码中重复这些编辑。但是,从后向/前向兼容性角度来看,API调用将更加可取。

+0

是的,我试过了。我仍然经历了大量的数据试图找出什么是什么。 – bugmagnet 2008-09-17 16:52:42

2

我认为您需要确保“Active Desktop”处于打开状态。

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

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

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知道使用哪组注册表值的机制。

0

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