我设法通过这个单行程序以编程方式更改我的桌面背景:
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(我只需要被调用函数的数字代码)。