我已经弄清楚如何更改桌面壁纸(互联网上有数十个示例。)
但有一件事情仍然困扰着我:如何检测壁纸何时更改?(比如通过显示控制面板或其他程序更改。)
我已经弄清楚如何更改桌面壁纸(互联网上有数十个示例。)
但有一件事情仍然困扰着我:如何检测壁纸何时更改?(比如通过显示控制面板或其他程序更改。)
在.NET中为WM_SETTINGCHANGE和SystemEvents.UserPreferenceChanged添加消息处理程序。检查壁纸是否仍然相同。
WM_SETTINGCHANGE
,但是我认为这是一种很好的通知方式。 - Aaron Klotz这里有一个用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