2013-06-05 6 views
6

Kennt jemand eine Möglichkeit, das Windows Desktop-Hintergrundbild mit Python zu ändern, so dass die Änderung dauerhaft ist? Ich habe diesen CodeWindows-Hintergrund von Python ändern

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

Dieser Code funktioniert, fand aber, sobald Sie sich abmelden und melden Sie sich wieder auf, der Hintergrund ist zurück auf das Originalbild. Ich würde eine Lösung bevorzugen, die keine Bearbeitung der Registrierung erfordert, und ich möchte etwas, das mit Windows XP und 7 funktioniert, wenn es möglich ist.

+0

Könnte es sein, dass die Hintergrundeinstellung auf dynamisch festgelegt ist. Ändert die Hintergrundbilder nach einiger Zeit. – user568109

+0

Hmmm. Ich habe das Python-Skript erneut ausgeführt, es ändert das Hintergrundbild, aber das ausgewählte Bild ist immer noch das alte Bild ... –

+1

Der letzte Parameter 'fWinIni' gibt an, ob das Benutzerprofil aktualisiert werden soll. Die Flags sind 'SPIF_UPDATEINIFLE == 1' und' SPIF_SENDCHANGE == 2'. Letzterer sendet eine 'WM_SETTINGCHANGE'-Nachricht. Versuchen Sie es mit 'fWinIni == 3'. – eryksun

Antwort

1

Diese Lösung vereint einige der Kommentare, und arbeitet für mich:

import ctypes 
import os 
drive = "C:\\" 
folder = "images" 
image = "test.jpg" 
image_path = os.path.join(drive, folder, image) 
SPI_SETDESKWALLPAPER = 20 
ctypes.windll.user32.SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, image_path, 3) 

(Beachten Sie, dass Sie den absoluten Pfad zu Ihrem Bild bestimmen sollten, und ändern Sie bei Bedarf auch um das Bild zu BMP konvertieren, wenn. Sie können es auf XP verwenden. Sie können das Bild einfach konvertieren using Pillow)