对于64位windows,请使用:ctypes.windll.user32.SystemParametersInfoW
对于32位窗口,请使用:
^{pr2}$
如果你用错了,就会出现黑屏。您可以在控制面板->系统和安全->系统中找到您使用的版本。在
您还可以让脚本选择正确的脚本:import struct
import ctypes
PATH = 'C:\\Users\\Patrick\\Desktop\\0200200220.jpg'
SPI_SETDESKWALLPAPER = 20
def is_64bit_windows():
"""Check if 64 bit Windows OS"""
return struct.calcsize('P') * 8 == 64
def changeBG(path):
"""Change background depending on bit size"""
if is_64bit_windows():
ctypes.windll.user32.SystemParametersInfoW(SPI_SETDESKWALLPAPER, 0, PATH, 3)
else:
ctypes.windll.user32.SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, PATH, 3)
changeBG(PATH)
更新:
我犯了一个以上的疏忽。正如注释中的@Mark Tolonen所示,它依赖于ANSI和UNICODE路径字符串,而不是OS类型。在
如果使用字节字符串路径,例如b'C:\\Users\\Patrick\\Desktop\\0200200220.jpg',请使用:
^{pr2}$
否则,您可以将其用于普通unicode路径:ctypes.windll.user32.SystemParametersInfoW
使用@Mark Tolonen's应答中的argtypes,以及另一个answer中的argtypes,也可以更好地突出显示这一点。在