こんにちは!今日はデスクトップの背景画像をコマンドで変更するバッチファイルの作成方法を紹介します。
基本的に背景画像の変更は手動でやることがほとんどだと思います。
ですが、一応レジストリを使った方法でも変更することが可能です。
手動とは違い、同じ設定を簡単に他のパソコンでも実行できるので、同じデスクトップ背景を設定したいときなどに使えます!
やりたいこと
デスクトップの背景画像を、バッチファイル実行で変更する。
スクリプト例
@echo off
rem ①画像ファイルの設定
set WALLPAPER_IMG=C:\test.bmp
rem ②デスクトップの背景に設定するレジストリ登録
reg add "HKCU\control panel\desktop" /v wallpaper /t REG_SZ /d %WALLPAPER_IMG% /f
rem ③画像の拡大表示設定
reg add "HKCU\control panel\desktop" /v WallPaperStyle /t REG_SZ /d 2 /f
rem ④背景の変更を適用するコマンドを連打する※
rem 1回では反応しないことが多いため複数回挿入しています
RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters
RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters
RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters
RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters
RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters
RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters
RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters
RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters
RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters
RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters
※なぜ反応しないのかは謎なのですが、とりあえずこれで変更することはできます(汗
解説
メインとなる処理を解説していきます。
①画像ファイルの設定
set WALLPAPER_IMG=C:\test.bmp
デスクトップの背景に設定したい画像ファイルの場所を、扱いやすいように「%WALLPAPER_IMG%」変数に「C:\test.bmp」を入れています。
②デスクトップの背景に設定するレジストリ登録
reg add "HKCU\control panel\desktop" /v wallpaper /t REG_SZ /d %WALLPAPER_IMG% /f
ここでは、「デスクトップの背景にしたい画像はここにありますよ!」をWindowsに伝えるためのレジストリ変更を行っています。
「reg add ~ /f」をすると、基本的に指定した通りの値にレジストリ値を変更できます。(Windowsの根幹に関わるような、一部のアクセス拒否されるレジストリ値は変更できないこともあります。)
ここでは、「HKCU\control panel\desktop」にある「wallpaper」という文字列型(REG_SZ)のレジストリ値に、「%WALLPAPER_IMG% = c:\test.bmp」を入れています。
③画像の拡大表示設定
reg add "HKCU\control panel\desktop" /v WallPaperStyle /t REG_SZ /d 2 /f
ここでは、「デスクトップの背景の画像は、上下に隙間ができないように自動で拡大・縮小してほしいです(アスペクト比無視)」をWindowsに伝えるためのレジストリ変更を行っています。
数字の「2」の箇所を変更することで、以下の通り画像の表示形式を変更できます。
「6」に変えると→アスペクト比を維持したまま拡大・縮小します。上下・左右のどちらかに余白ができてしまうことがあります。
「10」に変えると→アスペクト比を維持したまま拡大・縮小します。上下左右に余白ができない代わりに、上下か左右のどちらかが画面からはみ出すことがあります。
④背景の変更を適用する
RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters
「デスクトップの背景画像の変更を反映」させるためのコマンドです。
一度実行するのみでは反映されないこともあり、念のため10回実行しています。
具体的には、「user32」と呼ばれる「WindowsAPI」(「user32.dll」というダイナミックリンクライブラリ(dll)が実体ファイル)の中に含まれる「UpdatePerUserSystemParameters」という関数を「rundll32.exe」を介して実行しています。
より具体的には、「Windowsがユーザ設定値に関わるレジストリを再読み込みしてくれる」コマンドになっています。そのため、「デスクトップの背景画像の変更の反映」もしてくれる形になります。
上記コマンドを実行すると、デスクトップの背景画像が「C:\test.bmp」の画像に変更されます。
あとがき
今回はデスクトップの背景画像を変更するコマンドを紹介させていただきました。
個人的にパソコンを使っている方は、画像を「右クリック」して「デスクトップの背景に設定」を押せば済むことも多いかもしれません。バッチファイル化できる真髄には、「他の処理に組み込める」「大量のパソコンの設定を一斉に変更できる」といったものがありますね。
たくさんパソコンをお持ちの方はバッチファイルを作成しておき、すべてデザイン統一しても面白いかもしれません♪
何かのお役に立てれば幸いです。
コメント