python c python-3.x windows-7 ctypes

¿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.