初めに
私は自宅でのメインモニターとして、34インチのウルトラワイドモニターを使用しています。しかし、解像度が3440x1440(UWQHD)と4Kの次に高いため、ゲームによっては、この解像度で遊ぶにはグラフィック設定を落とす必要がでてくることがあります。最近だとモンハンワイルズとかです。あと横に長すぎて普通にプレイしづらいこともあります。
そのため、ゲームをするたびに、Windowsの設定からモニターの解像度を落としてから起動させ, 終わったら戻すという行為をしており、かなり面倒くさいです。
今回は、これらの作業をまとめてやってくれるbatファイルを作成したので紹介します。
準備
batファイルでモニターの解像度を変更させるには、Windowsの標準機能だけではできないので、「Display Changer II(以下, DC2)」というオープンソフトを使用します。
ダウンロードは下記から
次に以下のコードをテキストファイルに記述し、拡張子をbatに変更してください。
@echo off
setlocal EnableExtensions EnableDelayedExpansion
rem =========================================================
rem AutoRes Launcher
rem =========================================================
rem --- Check dc2.exe existence ---
if not exist "%~dp0dc2.exe" (
echo [ERROR] dc2.exe not found in %~dp0
pause
exit /b 1
)
rem --- Check config files existence ---
if not exist "%~dp0default.xml" (
echo [ERROR] default.xml not found. Please create it first with:
echo dc2.exe -create="default.xml"
pause
exit /b 1
)
if not exist "%~dp02560x1440.xml" (
echo [ERROR] 2560x1440.xml not found. Please create it first with:
echo dc2.exe -create="2560x1440.xml"
pause
exit /b 1
)
rem --- Game configuration ---
set gameName1=Monster Hunter Wilds
set gamePath1=F:\SteamLibrary\steamapps\common\MonsterHunterWilds\MonsterHunterWilds.exe
set gameProc1=MonsterHunterWilds.exe
set gameName2=Game2
set gamePath2=C:\Games\Game2\Game2.exe
set gameProc2=Game2.exe
set gameName3=Game3
set gamePath3=C:\Games\Game3\Game3.exe
set gameProc3=Game3.exe
cls
echo =============================
echo Select a game to launch:
for /L %%i in (1,1,50) do call :Show %%i
echo =============================
set /p choice=Enter number:
set "idx=%choice%"
if not defined gamePath%idx% (
echo Invalid selection.
pause
exit /b 1
)
call set "gamePath=%%gamePath%idx%%%"
call set "gameProc=%%gameProc%idx%%%"
call set "gameName=%%gameName%idx%%%"
echo.
echo =======================================
echo Changing resolution to 2560x1440 / 120Hz
echo =======================================
"%~dp0dc2.exe" -configure="%~dp0\2560x1440.xml"
timeout /t 2 >nul
echo Launching: !gameName!
start "" "!gamePath!"
echo Waiting for process: !gameProc!
:wait
timeout /t 5 >nul
tasklist | find /i "!gameProc!" >nul
if not errorlevel 1 goto wait
echo.
echo =======================================
echo Restoring default resolution...
echo =======================================
"%~dp0dc2.exe" -configure="%~dp0\default.xml"
echo Done.
pause
exit /b
:Show
setlocal
set idx=%1
call set name=%%gameName%idx%%%
if defined name (
echo [!idx!] !name!
)
endlocal
exit /b
DC2とbatファイルを用意したら適当にフォルダを作成し、2つを同じフォルダに配置してください。

batファイルの設定
適用するゲームのパスなどを指定する必要があります。
記載しているコードには例として、私の環境でモンスターハンターワイルズを設定してありますので、これを参考に、自分用に書き換えてください。

DC2用XMLファイルの作成
① 現在の設定を保存
現在の解像度設定を保存します。コマンドプロンプトでDC2とbatファイルがあるフォルダに移動して、以下のコマンドを実行してください。
C:\Users\hoge\Desktop\AutoResChange>dc2.exe -create="default.xml"
C:\Users\hoge\Desktop\AutoResChange>
② ゲーム用の解像度を設定して保存
Windowsのモニター設定を手動で変更先の解像度に変更してください(変更後がフルHDなら1920x1080です)。
変更後以下のコマンドを実行してください。
C:\Users\hoge\Desktop\AutoResChange>dc2.exe -create="2560x1440.xml"
C:\Users\hoge\Desktop\AutoResChange>
起動
一応、初回のみdc2.exeを一度起動してください。
batファイルを起動するとどのゲームを起動するか聞かれます(管理者権限で起動してください)。

ゲームを選択するとWindows側の解像度が自動的に変更され、ゲームが起動します。

おわりに
そもそも、この世にゲーミングPCのメインモニターをウルトラワイドにしてる人が、どれだけいるんだって話ですが。。。
まあ現在のレースゲーマーはウルトラワイドかVRで、3画面はすたれつつあるので少しは需要あるかと。
それでは。


