为什么这个ctypes代码不能与Python 3.3一起使用,但是可以与Python 2.7一起使用?

Luk*_*ler 5 c python ctypes windows-7 python-3.x

所以我正在尝试使用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)
Run Code Online (Sandbox Code Playgroud)

Bha*_*Rao 8

SystemParametersInfoA需要一个8位ANSI编码的输入字符串作为参数,这mbcsPython中称为编码.

你将不得不SystemParametersInfoW在python3中使用.这是因为SystemParametersInfoW在一个UTF-16宽字符串(这是需要wchar_t *在C)和ctypes库自动转换这个传递的unicode参数转换c_wchar_p.

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