2016-06-26 16 views
0

Ich versuchte jedes Beispiel auf SO und Google, aber keiner von ihnen funktioniert. Ich weiß nicht warum, Skript endet ohne Fehler. Aber das Hintergrundbild ändert sich nicht. Ich habe absoluten Pfad für dieses Bild, ich habe versucht jpg,png Formate, im Grunde habe ich alles versucht, aber alle Beispiele fertig ohne Fehler und doch Hintergrundbild nicht geändert. Gibt es ein funktionierendes Beispiel dafür? Windows-7 Python 3.4Python 3.4 ändern Desktop-Hintergrundbild funktioniert nicht

Einige Beispiele haben nicht funktioniert;

import ctypes 
SPI_SETDESKWALLPAPER = 20 
ctypes.windll.user32.SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, "myimage.jpg" , 0) 
######################################## 

#This example can't find images, but I put absolute path to it. Don't know what's the problem 
import struct 
import ctypes 


SPI_SETDESKWALLPAPER = 20 
WALLPAPER_PATH = 'C:\\your_file_name.jpg' 


def is_64_windows(): 
    """Find out how many bits is OS. """ 
    return struct.calcsize('P') * 8 == 64 


def get_sys_parameters_info(): 
    """Based on if this is 32bit or 64bit returns correct version of SystemParametersInfo function. """ 
    return ctypes.windll.user32.SystemParametersInfoW if is_64_windows() \ 
     else ctypes.windll.user32.SystemParametersInfoA 


def change_wallpaper(): 
    sys_parameters_info = get_sys_parameters_info() 
    r = sys_parameters_info(SPI_SETDESKWALLPAPER, 0, WALLPAPER_PATH, 3) 

    # When the SPI_SETDESKWALLPAPER flag is used, 
    # SystemParametersInfo returns TRUE 
    # unless there is an error (like when the specified file doesn't exist). 
    if not r: 
     print(ctypes.WinError()) 


change_wallpaper() 
+0

können Sie Ihren Code anzeigen? –

+0

Es gibt 10 Beispiele, die ich versucht habe, sollte ich sie alle setzen? "Ja wirklich?" – GLHF

+0

Nun, Sie geben nicht viele Informationen, um Hilfe zu bekommen. Können Sie einen auswählen, der Ihrer Meinung nach funktionieren sollte? –

Antwort

1

try folgenden Code:

import struct 
import ctypes 
import os 

def is_64_windows(): 
    """Find out how many bits is OS. """ 
    return 'PROGRAMFILES(X86)' in os.environ 

def get_sys_parameters_info(): 
    """Based on if this is 32bit or 64bit returns correct version of SystemParametersInfo function. """ 
    return ctypes.windll.user32.SystemParametersInfoW if is_64_windows() \ 
     else ctypes.windll.user32.SystemParametersInfoA 

def change_wallpaper(): 
    sys_parameters_info = get_sys_parameters_info() 
    r = sys_parameters_info(SPI_SETDESKWALLPAPER, 0, WALLPAPER_PATH, 3) 
    if not r:   # When the SPI_SETDESKWALLPAPER flag is used, SystemParametersInfo returns TRUE unless there is an error (like when the specified file doesn't exist). 
     print(ctypes.WinError()) 

SPI_SETDESKWALLPAPER = 20 
WALLPAPER_PATH = 'C:\\your_file_name.jpg' 
change_wallpaper() 

Ich denke, Ihr Problem ist, dass Sie 64 Fenster haben aber 32 Python, eine dann is_64_windows() Funktion False gibt, aber es ist tatsächlich True, 'PROGRAMFILES(X86)' in os.environ funktionieren sollte.

+0

Wow. Das funktioniert tatsächlich. Viele wow. Ich wünschte, ich könnte mehr als einmal upvote. – GLHF