Comment détecte-t-on le changement de fond d’écran (Windows XP ou supérieur)?

J’ai trouvé comment changer le papier peint du bureau (il y a des dizaines d’exemples sur Internet).

Une chose qui m’échappe encore: comment détecter le changement de papier peint? (Dites via le panneau de commande Display ou un autre programme le modifiant.)

Ajoutez un gestionnaire de messages pour WM_SETTINGCHANGE, SystemEvents.UserPreferenceChanged dans .NET. Vérifiez si le papier peint est toujours le même.

Voici un exemple en C # pour récupérer le papier peint. Tout ce que vous devez append est un code supplémentaire pour stocker le dernier fond d’écran et vérifier s’il est différent.

 RegistryKey wallpaper = Registry.CurrentUser.OpenSubKey("Control Panel\\Desktop",false); ssortingng wallpapername = wallpaper.GetValue("wallpaper").ToSsortingng(); wallpaper.Close(); 

Si vous RegNotifyChangeKeyValue quelque chose dans une langue autre que .net, vous pourriez utiliser la fonction RegNotifyChangeKeyValue API Win32 pour vérifier si cette valeur a changé

 HKEY_CURRENT_USER\Control Panel\Desktop\Wallpaper