win7以上系统批处理修改注册表修改桌面背景图片

最近想自己做一个自动切换桌面的小程序,大概思路是 根据爬虫或者自己指定的资料-->把文本绘制在图片上-->设置桌面的背景。

再设置桌面背景这一步的时候,在网上收集了下资料,大部分都是通过批处理修改注册表来实现,还有一部分是调用编程语言的系统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的写法的来源: 点击打开链接
每次都有效


#include
#include
using namespace std;
void main()
{
	 SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "C:/Users/xxxx/desk.bmp", SPIF_SENDCHANGE);//路径使用的是/
}

每次有效


综上,可以通过在批处理里面调用python或者exe的方式来实现win7以上系统切换桌面


你可能感兴趣的:(python,win,小工具)