Moonlight/Sunshine 仮想ディスプレイ自動化・完全運用ガイド

概要PCを「仮想ディスプレイ」をメインにした状態でリモートプレイ(Moonlight)しつつ、スリープ復帰時や再起動時には「物理モニター」に自動で戻す環境を構築する。これにより、「外出先から帰ってきたら画面が真っ暗で操作不能」という事故を100%防ぐ。1. 必要なツールの導入A. 仮想ディスプレイドライバ (Virtual Display Driver)物理モニターの電源を切った状態でも、PCに「高解像度・高リフレッシュレート」のモニターが繋がっていると認識させる。ドライバ: IddSampleDriver (MikeTheTech版) 推奨IDが MTT… となるため管理しやすい。設定: option.txt を編集し、好みの解像度(例: 1920, 1200, 120, 10)を追加してインストールする。B. MultiMonitorTool (NirSoft)コマンドラインからモニターの有効/無効、メイン画面の切り替えを行うツール。配置場所: C:\Tools\MultiMonitorTool\ (パスに日本語を含まないこと)準備 (IDの取得):ディスプレイ番号(DISPLAY1など)はWindowsの機嫌で変わるため、不変の「Monitor ID」 を使用する。コマンドプロンプトで MultiMonitorTool.exe /scomma list.csv を実行。list.csv を開き、仮想モニタと物理モニタの 「Monitor ID (例: MONITOR\MTT…)」 または 「Name (例: MTT1337, IVM7612)」 を控える。2. 切り替えバッチファイルの作成ポイント: タイムアウト(待機時間)を必ず入れること。Windowsの画面切り替え処理は重いため、待機しないとコマンドが無視される。A. 接続用 (connect.bat)仮想ディスプレイをメインにする。物理モニターは消さない(消すと不安定になるため、サブとして残す)。コード スニペット@echo off cd /d “C:\Tools\MultiMonitorTool”

:: 1. 仮想モニタを有効化 MultiMonitorTool.exe /Enable “MTT1337”

:: 2. 認識待ち (重要) timeout /t 3 /nobreak >nul

:: 3. 仮想モニタを「メイン画面」にする MultiMonitorTool.exe /SetPrimary “MTT1337”

:: 4. 解像度固定 (念のため) MultiMonitorTool.exe /SetResolution “MTT1337” 1920 1200 32 60 ※ ID (MTT1337) は環境に合わせて書き換える。B. 切断・復旧用 (disconnect.bat)物理モニターをメインに戻し、仮想ディスプレイを無効化(マウス迷子防止)する。コード スニペット@echo off :: PC寝起き時の待機 (タスクスケジューラ用) timeout /t 5 /nobreak >nul

cd /d “C:\Tools\MultiMonitorTool”

:: 1. 物理モニターを「メイン画面」に戻す MultiMonitorTool.exe /SetPrimary “IVM7612”

:: 2. 切り替わり待ち timeout /t 3 /nobreak >nul

:: 3. 仮想モニタを無効化 MultiMonitorTool.exe /Disable “MTT1337” 3. タスクスケジューラによる「自動復旧」設定スリープ復帰時や起動時に、自動的に disconnect.bat を走らせて物理モニター環境に戻す。タスクの作成設定(最重要)ここを間違えると「実行されているのに画面が変わらない」現象が起きる。タブ項目設定値 / チェック理由全般ユーザーアカウント自分のアカウント (ntohなど)SYSTEMは不可(画面操作権限がない)全般セキュリティ[x] ユーザーがログオンしているときのみ実行する最重要。 これにしないと画面が変わらない全般特権[x] 最上位の特権で実行する管理者権限が必要トリガータスクの開始イベント時スリープ復帰を検知するためトリガー設定ログ: システムソース: Power-TroubleshooterイベントID: 1Windowsが「スリープから起きた」合図操作プログラムC:\Tools...\disconnect.bat作成したバッチを指定操作開始 (オプション)C:\Tools\MultiMonitorTool\必須。 ツールが設定ファイルを読めなくなる条件電源[ ] AC電源で使用している場合のみ… (チェック外す)デスクトップでも復帰直後は判定ミスで動かないことがある4. Sunshine / Moonlight の設定Sunshine (ホストPC側)権限: Sunshine.exe のプロパティで 「管理者としてプログラムを実行する」 にチェックを入れる。Command: (オプション)Do Command: cmd /C C:\Tools...\connect.batUndo Command: cmd /C C:\Tools...\disconnect.bat※ただし、仮想モニタ環境ではコマンドよりも、Moonlight接続後に手動またはショートカットで connect.bat を叩く運用の方が安定する場合がある。Moonlight (クライアント側)解像度: 仮想ディスプレイの設定 (option.txt) と一致させる(例: 1920x1200)。5. アプリケーション表示のテクニックゲームが物理モニター(サブ画面)で起動してしまう場合仮想ディスプレイを「プライマリ(メイン)」に設定していれば、ほとんどのゲームは仮想側で起動するが、稀に物理側に残ることがある。Windowsショートカット:ゲーム画面をアクティブにして Win + Shift + ← (または →) を押す。瞬時に隣のモニターへウィンドウを飛ばせる。Steam Big Picture:Steamの設定で「起動時にBig Pictureモードを使用」し、Big Pictureのターゲットモニタを仮想ディスプレイにしておく。「物理モニターを消さない」運用の利点:物理モニターを Disable せず Primary を奪うだけの運用にしておけば、万が一物理側で起動しても、Moonlight上でデスクトップ操作してウィンドウをドラッグして持ってこれる。6. 運用上の「おやすみボタン」タスクスケジューラはあくまで「保険」。日常的にPCを終了/スリープする際は、以下のバッチファイルをデスクトップに置いてダブルクリックする。sleep_monitor.batコード スニペットcall disconnect.bat timeout /t 5 /nobreak >nul rundll32.exe powrprof.dll,SetSuspendState 0,1,0 これで「確実に物理画面に戻してからスリープ」するため、次回のトラブル確率がゼロになる。