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

相關問題