2013-06-05 17 views
6

Qualcuno conosce un modo per cambiare lo sfondo del desktop di Windows con python in modo che la modifica sia permanente? Ho trovato questo codiceCambia lo sfondo di Windows da Python

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

Questo codice funziona, ma una volta che si disconnette e accede nuovamente, lo sfondo è di nuovo l'immagine originale. Preferirei una soluzione che non richiede alcuna modifica del Registro di sistema, e vorrei qualcosa che funziona con Windows XP e 7 se è possibile.

+0

Potrebbe essere che l'impostazione dello sfondo sia impostata su dinamica. Cambia gli sfondi dopo un po 'di tempo. – user568109

+0

Hmmm. Ho eseguito di nuovo lo script Python, esso cambia l'immagine di sfondo, ma l'immagine selezionata è ancora la vecchia immagine ... –

+1

L'ultimo parametro, 'fWinIni'," specifica se il profilo utente deve essere aggiornato ". I flag sono 'SPIF_UPDATEINIFILE == 1' e' SPIF_SENDCHANGE == 2'. Quest'ultimo trasmette un messaggio 'WM_SETTINGCHANGE'. Prova a usare 'fWinIni == 3'. – eryksun

risposta

1

Questa soluzione combina molte delle osservazioni formulate, e funziona per me:

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) 

(Si noti che è necessario determinare il percorso assoluto alla vostra immagine, e il cambiamento come necessario Anche convertire l'immagine in BMP se. è necessario utilizzarlo su XP. È possibile convertire facilmente l'immagine using Pillow)

Problemi correlati