为什么这个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.

有关详细信息,请参阅documentation.

相关文章
相关标签/搜索