开发环境
Vs2017、Python3
注意,python调用了win32api,所以需要执行安装命令:pip install pywin32
代码1
此方式,利用winAPI可以完成。
import win32api, win32gui, win32api, win32con
import time
#import cv2
def setWallPaper(pic):
# open register
print(pic)
regKey = win32api.RegOpenKeyEx(win32con.HKEY_CURRENT_USER,"Control Panel\\Desktop",0,win32con.KEY_SET_VALUE)
win32api.RegSetValueEx(regKey,"WallpaperStyle", 0, win32con.REG_SZ, "2")
win32api.RegSetValueEx(regKey, "TileWallpaper", 0, win32con.REG_SZ, "0")
# refresh screen
win32gui.SystemParametersInfo(win32con.SPI_SETDESKWALLPAPER,pic, 1+2)
if __name__=='__main__':
pic="C:/Users/Administrator/Desktop/bmp.bmp" #写绝对路径
setWallPaper(pic)
#img = cv2.imread(pic)
#cv2.imshow("Image", img)
代码2
此方式,利用查找桌面句柄、+SDL可以完成。
备注:若spyxx查找出的桌面句柄为Progman的话需要按win+tab切换到WorkerW模式下才能正常找到桌面句柄,
##2022-01-07~~~~~动态桌面
##################by Ljj
##程序必须用win+tad使能系统的workerw中间层控件模式
##中间意外退出,二次运行sdlRenderer会使能失效,是因为没有很好的退出,二次运行就可以
##如果打开VC的软件跑一次,二次运行sdlRenderer则不会出错,很奇怪,未解之谜,但是我认为是SDL的底层冲突
##~~~~~~2天,还是卡卡顿顿的,底层图像渲染与播放五日
#-*- coding: utf-8 -*- ##设置编码方式
import win32gui, win32api, win32con
import os,cv2,time
import sdl2.ext
def setWallPaper(pic):
#通过