Perché questo codice ctypes non funziona con Python 3.3 ma funzionerà con Python 2.7?

Quindi sto cercando di creare un programma Python 3.3 per cambiare lo sfondo del desktop di Windows usando il modulo ctypes. Ho testato il seguente codice in Python 2.7, e ha funzionato perfettamente. Ma semplicemente non funzionerà con Python 3.3! Sto usando Windows 7. Ecco il codice:

import ctypes SPI_SETDESKTOPWALLPAPER=20 ctypes.windll.user32.SystemParametersInfoA(SPI_SETDESKTOPWALLPAPER, 0,"C:/Users/Public/Pictures/Sample Pictures/Penguins.jpg", 3) 

SystemParametersInfoA richiede una stringa di input codificata ANSI a 8 bit come parametro, che è nota come codifica mbcs in Python .

Dovrai usare SystemParametersInfoW in python3. Questo perché SystemParametersInfoW utilizza una stringa wide UTF-16 (che è wchar_t * in C) e la libreria ctypes converte automaticamente questo argomento unicode passato in c_wchar_p .

Fare riferimento alla documentazione per ulteriori dettagli.