如何检测壁纸何时发生变化(Windows XP或更高版本)?

时间:2010-01-06 16:44:30

标签: windows windows-7 wallpaper desktop-wallpaper

我已经想出如何更改桌面壁纸(互联网上有很多例子。)

我还有一件事情是:我如何检测壁纸何时发生变化? (通过显示控制面板或其他程序更改它。)

2 个答案:

答案 0 :(得分:7)

在.NET中为WM_SETTINGCHANGE,SystemEvents.UserPreferenceChanged添加消息处理程序。检查壁纸是否仍然相同。

答案 1 :(得分:4)

以下是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