如何检测壁纸是否更改(Windows XP或更高版本)?

5

我已经弄清楚如何更改桌面壁纸(互联网上有数十个示例。)

但有一件事情仍然困扰着我:如何检测壁纸何时更改?(比如通过显示控制面板或其他程序更改。)


什么编程语言/环境?.Net? MFC? Win32? - Joel Coehoorn
2个回答

8

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


它是WM_SETTINGCHANGE,但是我认为这是一种很好的通知方式。 - Aaron Klotz

5

这里有一个用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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接