python替换win10壁纸:对网上主流方法的补充
683 字
3 分钟
python替换win10壁纸:对网上主流方法的补充
主流方法代码缺陷
当你的win10在个性化中设置成纯色壁纸时(偶尔需要重启电脑后),主流方法就会失效。在个性化界面看的到替换变化,但桌面没有半点反应。
过程
终于在我废寝忘食的找了一天资料,测试了一遍又一遍后…在代码中加了一行代码解决了所有问题…
问题说明
这次我也不知道是不是网上主流方法的问题,在那么多遍的测试中,我只得出来一条结论:微软你就是歌姬吧。
问题所在:微软在winXP时的旧代码一直屯到现在。导致win10的壁纸显示规则十分的混乱,壁纸更换涉及到注册表的8个值和一个文件夹里的配置文件,更换壁纸的方法数不胜数,并且他们之间还互相干扰,令人头疼。最后我在注册表 HKEY_CURRENT_USER\Control Panel\Desktop 里的 wallpaper 值里加上图片路径才解决这个问题。这样改就最贴合从个性化里手动点击修改了。
代码
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") # 通过注册表来修改壁纸(更贴进手动设置,比下面那个优先级要高。可避免背景设置成纯色重启电脑后,出现无法更换壁纸的情况) win32api.RegSetValueEx(reg_key, "WallPaper", 0, win32con.REG_SZ, img_path.replace('/', '\\')) # 注意上方的 img_path.replace('/', '\\') 是将url的"/"线换成"\"线,注册表只认"\"线 # 刷新桌面与设置壁纸 win32gui.SystemParametersInfo(win32con.SPI_SETDESKWALLPAPER, img_path, win32con.SPIF_SENDWININICHANGE)
# 注意路径书写问题; "/"左滑线,"\"右滑线都可以img_path = "C:/Pictures/win10.jpg"
# 切换时要检查一下图片是否存在if os.path.exists(img_path): print('壁纸切换成功:' + img_path) set_wallpaper(img_path)else: print('图片不存在,切换失败')注意事项
win32api.RegSetValueEx(reg_key, "WallPaper", 0, win32con.REG_SZ, img_path.replace('/', '\\'))里的片段: img_path.replace('/', '\\') 是将img_path路径的”/“线换成"",注册表只认""线
原主流代码
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 = "C:/Pictures/win10.jpg"
# 切换时要检查一下图片是否存在if os.path.exists(img_path): set_wallpaper(img_path)else: print('图片不存在,切换失败')文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
python替换win10壁纸:对网上主流方法的补充
https://blog.jacksen168.top/posts/python-win10-wallpaper-replacement-supplement/ 相关文章 智能推荐
1
根据API更换Windows壁纸项目[python]
项目 根据API更换Windows壁纸项目[python]
2
关于VSCode Git GPG签名开机第一次提交失败的探究
文档 探究并解决VSCode中使用GPG签名提交Git时,开机后第一次提交报错,第二次才能正常弹出密码框的问题
3
关于DreamScene2 软件的一些探究
文档 关于DreamScene2 软件的一些探究
4
对于wallpaper engine软件的一些研究
文档 对于wallpaper engine软件的一些研究,稍微深入了解一下wallpaper engine软件的配置文件与软件行为的关联
5
Bili Images Uploader
项目 Bili Images Uploader - 将图片上传到B站图床并通过评论实现持久化存储
随机文章 随机推荐