2010-01-06 63 views
4

我已经想出了如何改变桌面壁纸(在互联网上有几十个例子)。如何检测墙纸改变时(Windows XP或更高版本)?

有一件事仍然没有回答我:如何检测壁纸发生了什么变化? (通过显示控制面板或其他程序更改它。)

+0

什么编程语言/环境? 。净? MFC? Win32的? – 2010-01-06 16:47:11

回答

4

以下是C#中检索壁纸的示例。所有你需要添加的是一些额外的代码来存储最后的壁纸,并检查它是否不同。

RegistryKey wallpaper = Registry.CurrentUser.OpenSubKey("Control Panel\\Desktop",false); 
string wallpapername = wallpaper.GetValue("wallpaper").ToString();   
wallpaper.Close(); 

如果你在,你可以使用Win32 API RegNotifyChangeKeyValue功能检查,看看是否这个值已经改变了非.NET语言写的东西:

HKEY_CURRENT_USER\Control Panel\Desktop\Wallpaper 
7

添加一个消息处理WM_SETTINGCHANGE, .NET中的SystemEvents.UserPreferenceChanged。检查壁纸是否仍然相同。

+0

它是'WM_SETTINGCHANGE',但是,我会说这是一个很好的通知方式。 – 2010-01-06 18:36:12