我已经弄清楚如何更改桌面墙纸(网上有几十个例子。)
我仍然无法理解的一件事:我如何检测墙纸何时更改?(通过显示控制面板或其他程序更改它。)
我已经弄清楚如何更改桌面墙纸(网上有几十个例子。)
我仍然无法理解的一件事:我如何检测墙纸何时更改?(通过显示控制面板或其他程序更改它。)
在 .NET 中为 WM_SETTINGCHANGE、SystemEvents.UserPreferenceChanged 添加消息处理程序。检查壁纸是否仍然相同。
这是一个用 C# 检索壁纸的示例。您需要添加的只是一些额外的代码来存储最后一张壁纸并检查它是否不同。
RegistryKey wallpaper = Registry.CurrentUser.OpenSubKey("Control Panel\\Desktop",false);
string wallpapername = wallpaper.GetValue("wallpaper").ToString();
wallpaper.Close();
如果您使用非 .net 语言编写内容,您可以使用 Win32 APIRegNotifyChangeKeyValue
函数检查此值是否已更改:
HKEY_CURRENT_USER\Control Panel\Desktop\Wallpaper