私が欲しいのは、数時間ごとにデスクトップの壁紙をプログラムで変更することです。バッチファイル(.bat)を使用していますが、他の言語やプログラムは使用したくありません。WindowsXPにプリインストールされているものだけを使用します。レジストリの値を変更するスクリプトをすでに作成しました
reg add "HKCU\Control Panel\Desktop" /v Wallpaper /d "C:\Pictures\picture1.jpg"
問題は、次のコマンドを使用してもスクリプトがリアルタイムで有効にならないことです。
RUNDLL32.EXE USER32.DLL,UpdatePerUserSystemParameters ,1 ,True
有効にするには、最初に再起動する必要があります。
表示プロパティを使用する場合は、すぐに表示されます。私が気付いたのは、それが.jpg画像ではなく、.bmpファイルの場合、変更はリアルタイムで有効になるということです。
2番目のオプションはJPGを24ビットBMPファイルに変換することです(まったく同じように見えますが、ファイルサイズは3倍になります)が、もっと良い方法を望んでいます。
私はすでに物事をグーグルで検索しましたが、役に立ちません。あなた(役立つ読者)が.batまたは.vbsスクリプトを投稿して、デスクトップの壁紙をJPG画像で即座に変更できることを願っています。他のアプリやスクリプトをインストールせずに答えがあるといいのですが。
表示プロパティを使用する場合は、すぐに表示されます。私が気付いたのは、それが.jpg画像ではなく、.bmpファイルの場合、変更はリアルタイムで有効になるということです。
これは、Windowsが壁紙のビットマップ以外をサポートしていないためです(はい、Windows 7でも)。
Jpeg、gif、pngなどを壁紙として設定すると、Windowsは最初にそれをビットマップに変換して一時ファイルに保存し、壁紙をそのファイルに設定します(Windows 7ではファイル名がこれをよりよく示しています) :
In Windows XP: %appdata%\Microsoft\Internet Explorer\Wallpaper1.bmp
In Windows 7: %appdata%\Roaming\Microsoft\Windows\Themes\TranscodedWallpaper.jpg
ですから、最初にビットマップに変換する必要があるのではないかと思います。
Explorerを再起動してみてください。これにより、レジストリが再起動され、再起動せずにバックグラウンドが変更される可能性があります(テストされていません)。
これをバッチで行うには
taskkill /im Explorer.exe /f && Explorer