Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何检测墙纸何时已更改(Windows XP或更高版本)?_Windows_Windows 7_Wallpaper_Desktop Wallpaper - Fatal编程技术网

如何检测墙纸何时已更改(Windows XP或更高版本)?

如何检测墙纸何时已更改(Windows XP或更高版本)?,windows,windows-7,wallpaper,desktop-wallpaper,Windows,Windows 7,Wallpaper,Desktop Wallpaper,我已经知道了如何改变桌面壁纸(互联网上有几十个例子) 有一件事我仍然没有意识到:当壁纸发生变化时,我该如何检测?(比如通过显示控制面板或其他程序更改它。)这里是一个用C#检索墙纸的示例。您需要添加的只是一些额外的代码来存储最后一张壁纸,并检查它是否不同 RegistryKey wallpaper = Registry.CurrentUser.OpenSubKey("Control Panel\\Desktop",false); string wallpapername = wallpaper.G

我已经知道了如何改变桌面壁纸(互联网上有几十个例子)

有一件事我仍然没有意识到:当壁纸发生变化时,我该如何检测?(比如通过显示控制面板或其他程序更改它。)

这里是一个用C#检索墙纸的示例。您需要添加的只是一些额外的代码来存储最后一张壁纸,并检查它是否不同

RegistryKey wallpaper = Registry.CurrentUser.OpenSubKey("Control Panel\\Desktop",false);
string wallpapername = wallpaper.GetValue("wallpaper").ToString();          
wallpaper.Close();
如果使用非.net语言编写某些内容,可以使用Win32 API
RegNotifyChangeKeyValue
函数检查此值是否已更改:

HKEY\U当前用户\控制面板\桌面\壁纸

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

什么编程语言/环境。网?MFC?Win32?这是WM\U设置更改,但是是的,我想说这是一个很好的通知方式。