用 Python 更改 Windows 背景

8
有没有人知道如何使用Python更改Windows桌面壁纸,以使更改是永久的?我找到了以下代码:
import ctypes
SPI_SETDESKWALLPAPER = 20 
ctypes.windll.user32.SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, "myimage.jpg" , 0)

这段代码可以使用,但是一旦您注销并重新登录,背景将恢复为原始图像。我希望有一个不需要任何注册表编辑的解决方案,并且如果可能的话,我希望它能在Windows XP和7上运行。

可能是壁纸设置为动态的了。会在一段时间后更换壁纸。 - user568109
2
最后一个参数 fWinIni,"指定是否要更新用户配置文件"。标志是 SPIF_UPDATEINIFILE == 1SPIF_SENDCHANGE == 2。后者广播一个 WM_SETTINGCHANGE 消息。尝试使用 fWinIni == 3 - Eryk Sun
1
@eryksun 将其更改为3会导致我的下一个登录背景变成黑色。桌面背景窗口显示我的背景现在是一个名为myimage的文件,它是一个黑色窗口。 - Michael Bell
1
你是否使用了绝对路径?"myimage.jpg" 可能一开始可以工作,因为它相对于进程的当前工作目录。 - Eryk Sun
可能是更改桌面背景的重复问题。 - bernard paulus
显示剩余4条评论
1个回答

4

这个解决方案结合了几条评论,对我非常有效:

import ctypes
import os
drive = "C:\\"
folder = "images"
image = "test.jpg"
image_path = os.path.join(drive, folder, image)
SPI_SETDESKWALLPAPER = 20 
ctypes.windll.user32.SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, image_path, 3)

请注意确定您的图像的绝对路径,并根据需要进行更改。 如果需要在XP上使用它,请将图像转换为BMP格式。 您可以使用Pillow轻松地转换图像 使用Pillow)。


你好。你能帮忙解决这个问题吗?https://stackoverflow.com/questions/65914485/set-windows-wallpaper-fit-span-position-using-python-script - Meet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接