Windows 发送WM_设置更改消息以刷新桌面

Windows 发送WM_设置更改消息以刷新桌面,windows,refresh,desktop,autoit,user32,Windows,Refresh,Desktop,Autoit,User32,我设法通过以下一行程序以编程方式更改桌面背景: DllCall("user32.dll", "int", "SystemParametersInfo", "int", 20, "int", 0, "str", $CmdLine[1], "int", 0) …通过将所需的墙纸拖放到已编译的脚本上 我有另一个程序更改桌面,但由于某种原因未能发送WM\u SETTINGCHANGE消息(我可以看到键HKCU\Control Panel\desktop\Wallpaper正在更新)。如何发送此消息以触

我设法通过以下一行程序以编程方式更改桌面背景:

DllCall("user32.dll", "int", "SystemParametersInfo", "int", 20, "int", 0, "str", $CmdLine[1], "int", 0)
…通过将所需的墙纸拖放到已编译的脚本上

我有另一个程序更改桌面,但由于某种原因未能发送
WM\u SETTINGCHANGE
消息(我可以看到键
HKCU\Control Panel\desktop\Wallpaper
正在更新)。如何发送此消息以触发墙纸刷新?
WM\u SETTINGCHANGE
消息是否正确?还是第一个脚本是唯一的方法

我试过这个,但不起作用:

DllCall("user32.dll", "lresult", "SendMessage", _
     "int", 0xffff, _
     "int", 0x001a, _
     "int", 0x0014, _
     "str", "HKCU\Control Panel")
0xffff
用于向每个窗口广播消息,
0x001a
代表
WM\u设置更改
0x0014
spi\u设置桌面壁纸
的代码。Windows7中的任务栏会闪烁,但壁纸不会改变

<如果你在C++、Visual Basic或Visual Basic中解决我的问题,我将把它转换成自动调用(我只需要调用函数的数字代码)。

<代码> #包括 Dim$hWnd=wingthandle(“[CLASS:Progman]”) _SendMessage($hWnd,$WM_命令,0x0001A220) 应该有用。如果没有,请告诉我,以便我可以更新此答案。

\include
#包括
Dim$hWnd=wingthandle(“[CLASS:Progman]”)
_SendMessage($hWnd,$WM_命令,0x0001A220)

应该有用。如果没有,请告诉我,这样我可以更新此答案。

不幸的是,它不起作用。我看到任务栏托盘附近有点闪烁,但壁纸没有改变。不管怎样,我找到了这个(wpreresh.exe),它似乎起到了作用。当我手动更改
HKCU\Control Panel\Desktop\Wallpaper
并运行wprefresh时,新的墙纸将可见。我不知道它发出了什么信息,它只是起作用而已。不过,谢谢你的关注。不幸的是,它不起作用。我看到任务栏托盘附近有点闪烁,但壁纸没有改变。不管怎样,我找到了这个(wpreresh.exe),它似乎起到了作用。当我手动更改
HKCU\Control Panel\Desktop\Wallpaper
并运行wprefresh时,新的墙纸将可见。我不知道它发出了什么信息,它只是起作用而已。不过,谢谢你的关注。
#include <SendMessage.au3>
#include <WindowsConstants.au3>

Dim $hWnd = WinGetHandle('[CLASS:Progman]')
_SendMessage($hWnd, $WM_COMMAND, 0x0001A220)