最近想自己做一个自动切换桌面的小程序,大概思路是 根据爬虫或者自己指定的资料-->把文本绘制在图片上-->设置桌面的背景。
再设置桌面背景这一步的时候,在网上收集了下资料,大部分都是通过批处理修改注册表来实现,还有一部分是调用编程语言的系统api实现(也是修改注册表),但是在实际的操作中,通过批处理和vbs脚本实现的,不能每次都奏效,而c++和python的api实现的可以即时有效。
reg add "hkcu\control panel\desktop" /v wallpaper /d "C:\Users\xxxx\2.bmp" /f RunDll32.exe USER32.DLL,UpdatePerUserSystemParameters不是每次都奏效,在网上部分帖子由注明,win7以上系统可能需要多次点击才生效
set ws=createobject("wscript.shell") ws.regwrite "HKCU\Control Panel\Desktop\Wallpaper","C:\Users\xxxx\desk.jpg","REG_SZ" ws.regwrite "HKCU\Control Panel\Desktop\TileWallpaper","1","REG_SZ" ws.run "RunDll32.exe USER32.DLL,UpdatePerUserSystemParameters"效果同批处理,有时候会导致出现无背景,即只有黑色纯色背景
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, "2") # 最后的参数:1表示平铺,拉伸居中等都是0 win32api.RegSetValueEx(reg_key, "TileWallpaper", 0, win32con.REG_SZ, "0") # 刷新桌面 win32gui.SystemParametersInfo(win32con.SPI_SETDESKWALLPAPER, img_path, win32con.SPIF_SENDWININICHANGE) #注意这里路径使用的是/而不是\ set_wallpaper('C:/Users/xxxx/total.jpg')python的写法的来源: 点击打开链接
每次都有效
扫描二维码关注公众号,回复:
1025810 查看本文章
#include<iostream> #include<windows.h> using namespace std; void main() { SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "C:/Users/xxxx/desk.bmp", SPIF_SENDCHANGE);//路径使用的是/ }
每次有效
综上,可以通过在批处理里面调用python或者exe的方式来实现win7以上系统切换桌面