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

有关详细信息,请参阅文档 。