1.切换代码
import os,win32gui,win32con,win32api
def set_wallpaper(img_path):
# 打开指定注册表路径
reg_key = win32api.RegOpenKeyEx(win32con.HKEY_CURRENT_USER, "Control Panel\\Desktop", 0, win32con.KEY_SET_VALUE)
# 最后的参数:2拉伸,0居中,6适应,10填充,0平铺
win32api.RegSetValueEx(reg_key, "WallpaperStyle", 0, win32con.REG_SZ, "10")
# 最后的参数:1表示平铺,拉伸居中等都是0
win32api.RegSetValueEx(reg_key, "TileWallpaper", 0, win32con.REG_SZ, "0")
# 刷新桌面与设置壁纸
win32gui.SystemParametersInfo(win32con.SPI_SETDESKWALLPAPER, img_path, win32con.SPIF_SENDWININICHANGE)
#注意路径书写问题
img_path = "D:/aatest/4de3f211e91dda5e1de482e2b14835bd.jpg"
#切换时要检查一下图片是否存在
if os.path.exists(img_path):
set_wallpaper(img_path)
else:
print('图片不存在,切换失败')
说明一下我的测试运行环境:windows10
python37
需要的python库:os, pywin32
代码说明:用Python切换桌面壁纸有几种方法,我采用的的最常用,最稳定的方法。用pywin32的API修改注册表来切换壁纸。
想了解更多,可以看一下这篇博文:https://blog.csdn.net/aricover/article/details/78684894
2.python取消切换壁纸的问题
在网上很少有谈及,在用python进行了切换壁纸后,如果不想切换了怎么办(对应与我上面的切换方法,其他方法没有研究)。我在这说一下我的经历,供学习之用。
首先我们先了解一下用上面代码切换壁纸前后,系统注册表和Windows壁纸的缓存文件夹 的变化
打开注册表,win+R快捷键打开注册表,按如下图的路径找到我们的壁纸注册表位置
2.1 切换前注册表:
在 Desktop目录下的WallPaper是壁纸的注册表关键字,请注意他右边的壁纸路径,待会和切换后的比较。
切换后注册表:
可以看出上面代码运行后并没有改变注册表。下面我们再看看壁纸缓存文件夹。
2.2 切换前壁纸缓存文件夹
注:要把下图的隐藏的项目打钩才可以找的
在上图可以看出在文件夹里有我们当前壁纸的备份缓存。
切换后文件夹:
由上图可以看出,文件夹的图片已经变成切换后的壁纸文件了。
2.3 结论和取消问题:
用上面代码进行切换壁纸并没有直接改变壁纸注册表的值,所以可以说不用进行取消操作。
方式1:在你关机再开电脑时会变回切换前的状态,也就是根据壁纸注册表的值来设置壁纸。
方式2:当然,你也可以直接在设置中修改壁纸,这样就可以覆盖之前的注册表值。