Как определить, когда обои изменились (Windows XP или выше)?
Я разобрался, как сменить обои на рабочем столе (в интернете десятки примеров).
Одна вещь, которая все еще ускользает от меня: как я могу определить, когда обои изменились? (Скажите через панель управления дисплея или другую программу, меняющую его.)
2 ответа
Добавьте обработчик сообщения для WM_SETTINGCHANGE, SystemEvents.UserPreferenceChanged в.NET. Убедитесь, что обои остались прежними.
Вот пример в C# для получения обоев. Все, что вам нужно добавить, это дополнительный код для хранения последних обоев и проверить, не отличаются ли они.
RegistryKey wallpaper = Registry.CurrentUser.OpenSubKey("Control Panel\\Desktop",false);
string wallpapername = wallpaper.GetValue("wallpaper").ToString();
wallpaper.Close();
Если бы вы писали что-то не на языке.net, вы могли бы использовать Win32 API RegNotifyChangeKeyValue
функция, чтобы проверить, изменилось ли это значение:
HKEY_CURRENT_USER\Control Panel\Desktop\Wallpaper