¿Por qué este código ctypes no funcionará con Python 3.3 sino que funcionará con Python 2.7?
python-3.x windows-7 (1)
Así que estoy tratando de hacer un programa Python 3.3 para cambiar el fondo del escritorio de Windows usando el módulo ctypes. He probado el siguiente código en Python 2.7, y funcionó perfectamente. ¡Pero simplemente no funcionará con Python 3.3! Estoy usando Windows 7. Aquí está el código:
import ctypes
SPI_SETDESKTOPWALLPAPER=20
ctypes.windll.user32.SystemParametersInfoA(SPI_SETDESKTOPWALLPAPER, 0,"C:/Users/Public/Pictures/Sample Pictures/Penguins.jpg", 3)
SystemParametersInfoA
requiere una cadena de entrada codificada ANSI de 8 bits como parámetro, que se conoce como codificación
mbcs
en
Python
.
Tendrá que usar
SystemParametersInfoW
en python3.
Esto se debe a que
SystemParametersInfoW
toma una cadena ancha UTF-16 (que es
wchar_t *
en C) y la biblioteca
ctypes
convierte automáticamente este argumento unicode pasado en
c_wchar_p
.
Consulte la documentation para más detalles.