1
我設法通過這一個班輪以編程方式更改我的桌面背景:發送WM_SETTINGCHANGE消息刷新桌面
DllCall("user32.dll", "int", "SystemParametersInfo", "int", 20, "int", 0, "str", $CmdLine[1], "int", 0)
…通過將所需的壁紙拖放到編譯的腳本上。
我有另一個程序,更改桌面,但由於某種原因未能發送WM_SETTINGCHANGE
消息(我可以看到密鑰HKCU\Control Panel\Desktop\Wallpaper
得到更新)。我如何發送此消息來觸發壁紙刷新? WM_SETTINGCHANGE
正確的消息?或者是第一個腳本是唯一的方法?
我試過,但它不工作:
DllCall("user32.dll", "lresult", "SendMessage", _
"int", 0xffff, _
"int", 0x001a, _
"int", 0x0014, _
"str", "HKCU\Control Panel")
0xffff
是廣播消息的每一個窗口,0x001a
代表WM_SETTINGCHANGE
,0x0014
是spi_setdeskwallpaper
的代碼。 Windows 7中的任務欄會閃爍,但壁紙不會更改。
如果你在C,C++或Visual Basic中解決我的問題,我會自己將它轉換爲AutoIt(我只需要被調用函數的數字代碼)。
不幸的是,它不起作用。我看到任務欄中托盤附近有一點閃爍,但壁紙不變。無論如何,我發現這個[小實用程序](http://windowsxp.mvps.org/wprefresh.exe)(wprefresh.exe),這似乎有伎倆。當我手動更改'HKCU \ Control Panel \ Desktop \ Wallpaper'並運行wprefresh時,新牆紙變得可見。我不知道它發送了什麼信息,它只是起作用。儘管如此,感謝您的關注。 – Marco