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/
作者
jacksen168
发布于
2022-10-22
许可协议
CC BY-NC-SA 4.0

评论区

Profile Image of the Author
jacksen168
Hello, I'm jacksen168.
音乐
封面

音乐

暂未播放

0:00 0:00
暂无歌词
分类
标签
站点统计
文章
19
分类
4
标签
46
总字数
21,887
运行时长
0
最后活动
0 天前
访问统计
当前在线
-
今日访问
-
今日浏览
-
昨日访问
-
昨日浏览
-
本月访问
-
累计访问
-

文章目录