通过python更改Windows 10中的桌面背景

M4d*_*r1d 3 windows python-3.x windows-10

我正在为自己做一个小项目,结果碰壁了。我需要在 Windows 10 64 位上更改桌面背景。我尝试使用下面的脚本根据本地图像更改背景。代码执行没有错误,但桌面只是变黑。我仔细检查过,我的图像在,c:\CuratedWallpaper\Mario.bmp所以这不是问题。

import ctypes

directory = "c:\CuratedWallpaper"
imagePath = directory + "\Mario.bmp"

def changeBG(imagePath):
    SPI_SETDESKWALLPAPER = 20
    ctypes.windll.user32.SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, imagePath , 0)
    return;

changeBG(imagePath)
Run Code Online (Sandbox Code Playgroud)

小智 6

我使用 SystemParametersInfoW 而不是 SystemParametersInfoA 像这样:

ctypes.windll.user32.SystemParametersInfoW(20, 0, path, 3)

这是 ANSI 与 UNICODE 路径字符串的问题。

它在 Windows 10 中对我有用。

  • @finngu,“3”似乎是“SPIF_UPDATEINIFILE |” SPIF_SENDCHANGE`。第一个常量“将新的系统范围参数设置写入用户配置文件”。第二个“在更新用户配置文件后广播‘WM_SETTINGCHANGE’消息。” https://devblogs.microsoft.com/oldnewthing/20160721-00/?p=93925 (2认同)