使用Python Script设置Windows Wallpaper的fit/span/position



关于如何使用python脚本更改桌面壁纸有很多问题和文章。如下:

file = "---path---"
SPI_SETDESKWALLPAPER = 20
ctypes.windll.user32.SystemParametersInfoW(SPI_SETDESKWALLPAPER, 0, file , 0)

但是,这段代码不会改变墙纸的位置。它只改变壁纸文件。比如说,早期的墙纸被定位为"填充"。然后新壁纸也会设置为"填充"。我们必须手动更改该位置为fit/fill/span/tile/居中根据我们的要求。

这里有一个文档讨论了使用DESKTOP_WALLPAPER_POSITION enumeration (shobjidl_core.h)的c++函数来改变壁纸的位置。

但是,我不能在python中使用。

谁能帮我指给我正确的方向?我们可以使用python脚本更改墙纸的适合位置吗?我们如何将该参数传递给上面的代码?

您只需修改2个注册表值。并需要设置壁纸,使其生效。

import winreg, ctypes, win32con
FILL,FIT,STRETCH,TILE,CENTER,SPAN = 0,1,2,3,4,5
MODES = (0,10),(0,6),(0,2),(1,0),(0,0),(0,22)
value1,value2 = MODES[FILL] # choose mode here
key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, r"Control PanelDesktop", 0, winreg.KEY_WRITE)
winreg.SetValueEx(key, "TileWallpaper", 0, winreg.REG_SZ, str(value1))
winreg.SetValueEx(key, "WallpaperStyle", 0, winreg.REG_SZ, str(value2))
winreg.CloseKey(key)
def setWallpaper(path):
changed = win32con.SPIF_UPDATEINIFILE | win32con.SPIF_SENDCHANGE
ctypes.windll.user32.SystemParametersInfoW(win32con.SPI_SETDESKWALLPAPER,0,path,changed)
setWallpaper("C:/absolute/path/to/your/image.jpg")

最新更新