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

编程入门 行业动态 更新时间:2024-10-24 08:19:26

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

再设置桌面背景这一步的时候,在网上收集了下资料,大部分都是通过批处理修改注册表来实现,还有一部分是调用编程语言的系统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<iostream>
#include<windows.h>
using namespace std;
void main()
{
	 SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "C:/Users/xxxx/desk.bmp", SPIF_SENDCHANGE);//路径使用的是/
}

每次有效


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


更多推荐

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

本文发布于:2023-06-11 03:27:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1378752.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:批处理   背景图片   桌面   注册表修改   系统

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!