このワンライナーを使用して、デスクトップの背景をプログラムで変更することができました。
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 に変換します (必要なのは、呼び出された関数の数値コードだけです)。