如何更改壁纸实时注册表命令?

如何更改壁纸实时注册表命令?

我想要的是每隔几个小时以编程方式更改桌面壁纸。我使用的是批处理文件 (.bat),不想使用其他语言或程序,只想使用 Windows XP 预装的东西。我已经编写了可以修改注册表中值的脚本

reg add "HKCU\Control Panel\Desktop" /v Wallpaper /d "C:\Pictures\picture1.jpg"

问题是,即使使用以下命令,脚本也无法实时生效:

RUNDLL32.EXE USER32.DLL,UpdatePerUserSystemParameters ,1 ,True

我需要先重新启动才能使其生效。

如果我要使用“显示属性”,它会立即显示。我注意到,如果是 .bmp 文件,更改将实时生效,而如果是 .jpg 图像,则不会。

第二种选择是将 JPG 转换为 24 位 BMP 文件(看起来完全相同,但文件大小将增加三倍),但我希望有更好的方法。

我已经在 Google 上搜索过,但无济于事。我希望您(乐于助人的读者)可以发布任何 .bat 甚至 .vbs 脚本,以便立即用 JPG 图片更改桌面壁纸。我希望有一个答案,而无需安装其他应用程序或脚本。

答案1

如果我要使用显示属性,它会立即显示。我注意到,如果它是一个.bmp文件而不是.jpg图像,则更改将实时生效。

这是因为 Windows 不支持除位图之外的壁纸(是的,即使在 Windows 7 中)。

当您将 jpeg、gif、png 等设置为壁纸时,Windows 首先将其转换为位图,将其保存到临时文件,然后将壁纸设置为该文件(在 Windows 7 中,文件名更能说明这一点):

In Windows XP: %appdata%\Microsoft\Internet Explorer\Wallpaper1.bmp
In Windows 7:  %appdata%\Roaming\Microsoft\Windows\Themes\TranscodedWallpaper.jpg

所以恐怕您确实需要先将其转换为位图。

答案2

尝试重新启动资源管理器,这将重新启动注册表,可能会(未经测试)更改背景而无需重新启动。

批量执行此操作

taskkill /im explorer.exe /f && explorer

相关内容