当我们通过
python
设置桌面壁纸后,重启电脑会变回原来的壁纸。python的ctypes模块更改壁纸后并不会修改注册表的内容,所以我们在设置好壁纸之后需要将注册表中桌面壁纸的值也一并修改。
查看注册表
我们打开注册表,找到如下目录:
HKEY_CURRENT_USER\Control Panel\Desktop
点开之后找到 WallPaper,这个就是壁纸的关键参数。
通过代码修改注册表
我们接下来通过代码来实现更改注册表内容。
设置桌面壁纸
这是之前设置桌面壁纸的代码
ctypes.windll.user32.SystemParametersInfoW(20, 0, imgLink, 0)
修改注册表
然后我们在这段代码之后加上注册表修改的代码,使用
win32con
、
win32api
模块,需要安装
pywin32.
Hkey = win32api.RegCreateKey(win32con.HKEY_CURRENT_USER, r'Control Panel\Desktop')
win32api.RegSetValueEx(Hkey, 'WallPaper', 0, win32con.REG_SZ, imgLink)
win32api.RegCloseKey(Hkey)
另外一种写法
还有一种写法是需要使用
winreg
模块.
Hkey = winreg.CreateKey(winreg.HKEY_CURRENT_USER, r'Control Panel\Desktop')
winreg.SetValueEx(Hkey, 'WallPaper', 0, winreg.REG_SZ, imgLink)
winreg.CloseKey(Hkey)
上面代码中的imgLink是图片的绝对路径,也就是完整的路径,不能填写项目文件夹下的路径以及虚拟路径。
设置桌面壁纸后,重启电脑会变回原来的壁纸。python的ctypes模块更改壁纸后并不会修改注册表的内容,所以我们在设置好壁纸之后需要将注册表中桌面壁纸的值也一并修改。上面代码中的imgLink是图片的绝对路径,也就是完整的路径,不能填写项目文件夹下的路径以及虚拟路径。点开之后找到 WallPaper,这个就是壁纸的关键参数。然后我们在这段代码之后加上注册表修改的代码。我们接下来通过代码来实现更改注册表内容。这是之前设置桌面壁纸的代码。还有一种写法是需要使用。
问题:
Python
ctypes模块运行dll文件遇到无效win32
原因:doll是在vs x86环境下编译出来的,是32位,而
python
安装的是64位,两者不兼容
解决方法:在
python
官网上下载最新32位
python
,作为编译器来运行dll文件即可
在我们开始之前,一定要注意这篇文章只针对Windows用户!对于那些使用Windows的人来说,这是一个有趣的想法。
如果您想使用
python
更改
桌面背景
,您会做什么?您可能要去一个库或寻找一个库,但是这不需要Windows中的库,您可以在不安装特殊库和使用ctype的情况下更改背景。
实际上,可以使用常用的命令更改
桌面背景
,以更改ctype中的系统参数。(让我们写一个面向对象的程序,这样我们的工作就干净有序了。)
SystemParametersInfo(win32con.SPI_SETDESKWALLPAPER,imagepath, 1+2) 另一个程序正在使用,无法访问;
pywintypes.error: (0, 'SystemParametersInfo', 'No error message is available')
pyinstaller
python
更换Windows壁纸 beautifulsoup
应用SystemParametersInfo函数可以获取和
设置
数量众多的windows系统参数。这个小程序就是运用了SystemParametersInfo函数来
设置
桌面的墙纸,而且程序可以让我们选择多幅墙纸图片,程序会以一定的时间间隔自动改变墙纸。
我们先来看看SystemParametersInfo函数的定义和参数:
使用API函数之前必须先在程序中声明如下:
Private Declare Function SystemParametersInfo Lib "user32" Alias "Sys
本系列博客是集大家之所长,将优秀的自动化测试框架的优秀实践都写出来,对于大家,希望可以有参考和借鉴的地方,对于自己,手勤免脑记,并且让别人知道我是掌握这个能力.
项目地址:https://github.com/WaterLoran/LoranTest