![如何更改壁纸实时注册表命令?](https://linux22.com/image/1319982/%E5%A6%82%E4%BD%95%E6%9B%B4%E6%94%B9%E5%A3%81%E7%BA%B8%E5%AE%9E%E6%97%B6%E6%B3%A8%E5%86%8C%E8%A1%A8%E5%91%BD%E4%BB%A4%EF%BC%9F.png)
我想要的是每隔几个小时以编程方式更改桌面壁纸。我使用的是批处理文件 (.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