Как определить, когда обои изменились (Windows XP или выше)? - PullRequest
4 голосов
/ 06 января 2010

Я разобрался, как сменить обои для рабочего стола (в интернете десятки примеров.)

Одна вещь, которая все еще ускользает от меня: как я могу определить, когда обои изменились? (Скажите через панель управления дисплея или другую программу, меняющую его.)

Ответы [ 2 ]

7 голосов
/ 06 января 2010

Добавить обработчик сообщения для WM_SETTINGCHANGE, SystemEvents.UserPreferenceChanged в .NET.Убедитесь, что обои остались прежними.

4 голосов
/ 06 января 2010

Вот пример в 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
...