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