2013-06-05 50 views
6

有谁知道用python更改Windows桌面壁纸的方法,以便更改是永久性的吗?我发现此代码从Python更改Windows背景

import ctypes 
SPI_SETDESKWALLPAPER = 20 
ctypes.windll.user32.SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, "myimage.jpg" , 0) 

此代码有效,但是一旦您注销并再次登录,背景将回到原始图像。我更喜欢不需要任何注册表编辑的解决方案,并且我希望可以使用Windows XP和7的某些功能。

+0

难道是壁纸设置设置为动态。一段时间后更改壁纸。 – user568109

+0

嗯。我再次运行python脚本,它更改背景图像,但所选图像仍旧是旧图像... –

+1

最后一个参数“fWinIni”指定是否更新用户配置文件。这些标志是'SPIF_UPDATEINIFILE == 1'和'SPIF_SENDCHANGE == 2'。后者广播“WM_SETTINGCHANGE”消息。尝试使用'fWinIni == 3'。 – eryksun

回答

1

该解决方案结合了几个提出的意见,以及对我的作品:

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) 

(请注意,你应该确定的绝对路径,以你的形象,并根据需要进行更改也将图像转换为BMP如果。你需要在XP上使用它,你可以很容易地转换图像using Pillow