以下对我有用。我正在使用Windows 10 64位和Python 3。
import osimport ctypesfrom ctypes import wintypesdrive = "c:\"folder = "test"image = "midi turmes.png"image_path = os.path.join(drive, folder, image)SPI_SETDESKWALLPAPER = 0x0014SPIF_UPDATEINIFILE = 0x0001SPIF_SENDWININICHANGE = 0x0002user32 = ctypes.WinDLL('user32')SystemParametersInfo = user32.SystemParametersInfoWSystemParametersInfo.argtypes = ctypes.c_uint,ctypes.c_uint,ctypes.c_void_p,ctypes.c_uintSystemParametersInfo.restype = wintypes.BOOLprint(SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, image_path, SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE))
重要的是要确保使用Unipre字符串(
image_path如果使用
SystemParametersInfoW)和字节字符串(如果使用)
SystemParametersInfoA。请记住,在Python
3中,字符串是默认的Unipre。
这也是很好的做法,设定
argtypes和
restype为好。您甚至可以“撒谎”并将第三个argtypes参数设置
c_wchar_p为for
SystemParametersInfoW,然后ctypes将验证您正在传递Unipre字符串而不是字节字符串。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)