为什么这个ctypes代码不能与Python 3.3一起使用,但是可以与Python 2.7一起使用?
所以我正在尝试使用ctypes模块创建一个Python 3.3程序来更改Windows桌面背景。 我在Python 2.7中测试了以下代码,它运行得很好。 但它只适用于Python 3.3! 我正在使用Windows 7.这是代码:
import ctypes SPI_SETDESKTOPWALLPAPER=20 ctypes.windll.user32.SystemParametersInfoA(SPI_SETDESKTOPWALLPAPER, 0,"C:/Users/Public/Pictures/Sample Pictures/Penguins.jpg", 3)
SystemParametersInfoA
需要一个8位ANSI编码的输入字符串作为参数,在Python中称为mbcs
编码。
您将不得不在python3中使用SystemParametersInfoW
。 这是因为SystemParametersInfoW
接收UTF-16宽字符串(在C中为wchar_t *
)并且ctypes
库自动将此传递的unicode参数转换为c_wchar_p
。
有关详细信息,请参阅文档 。