2015年7月7日火曜日

コマンドプロンプトでWindowsのディスプレイ設定を変える

ノートパソコンを仕事場でデュアルディスプレイにしている場合,出先から帰った時に自動的に元の設定に戻らないことがある.最近のWindowsは賢いから自動的に戻ってくれる様だが,たまに接続する順番によっては元に戻らない.たとえばノートパソコンを閉じたまま外部ディスプレイにつなげると,外部ディスプレイ表示のみという情報に変わってしまい,パソコンを開いてもデュアルディスプレイにならなくなってしまう.

コマンドラインでWindowsのディスプレイの設定を変えるために,Display Changerを使う(私的利用ならフリー).
http://12noon.com/?page_id=80

インストーラでインストールし,以下のコマンドを実行してディスプレイの情報を得る.なお32bit版はdccmd.exeで,64bit版はdc64cmd.exeである.インストール先は"C:\Program Files (x86)\12noon Display Changer"であった

>dc64cmd.exe -listmonitors
Monitor: 汎用 PnP モニター
Device: \\.\DISPLAY1
Adapter: Intel(R) HD Graphics 5500
(1920 x 1080 x 32 bpp) 60Hz up, attached, primary (0,0)

Monitor:
Device: \\.\DISPLAY2
Adapter: Intel(R) HD Graphics 5500
(1920 x 1080 x 32 bpp) 60Hz up

Monitor:
Device: \\.\DISPLAY3
Adapter: Intel(R) HD Graphics 5500
(1920 x 1080 x 32 bpp) 60Hz up

\\.\DISPLAY1がノートPCのディスプレイで,他が外部ディスプレイ.ノートPCの真上にFullHDのモニタを設置するには,以下のコマンドを実行する.

>dc64cmd.exe -monitor="\\.\DISPLAY2" -secondary -width=1920 -height=1080 -ty=-1080 -lx=0

-widthと-heightはDISPLAY2の解像度,-tyと-lxは原点(左上)のプライマリモニタに対する相対位置.上側/左側に持って行く場合は負になる.

確認すると,ちゃんと\\.\DISPLAY2が\\.\DISPLAY1の上部に設置された.

>dc64cmd.exe -listmonitors
Monitor: 汎用 PnP モニター
Device: \\.\DISPLAY1
Adapter: Intel(R) HD Graphics 5500
(1920 x 1080 x 32 bpp) 60Hz up, attached, primary (0,0)

Monitor: 汎用 PnP モニター
Device: \\.\DISPLAY2
Adapter: Intel(R) HD Graphics 5500
(1920 x 1080 x 32 bpp) 60Hz up, attached (0,-1080)

ディスプレイを外すには以下のコマンドを実行すればよい(今時のWindowsならブチッと抜いてもいいだろう).

>dc64cmd.exe -monitor="\\.\DISPLAY2" -detach

あとはよく使うコマンドをバッチファイルに書いてショートカットに設定すればOK

3 件のコメント:

  1. Windows ってまだコマンドラインあったんだ... てか、ここまでして Windows 使わなくていいんじゃないの?(笑)

    返信削除
    返信
    1. システムの管理にスクリプトによる制御ができると楽だからね.コマンドプロンプト(cmd.exe)は機能が限定的だけれど,最近のMSはPowerShellの様なCUI Shellを提供していたりするよ.

      Windows on LinuxとLinux on Windowsのどちらかがいいかは議論の余地はあると思うけれど,特殊なHW(ポートリプリケータ)とか最新HW向けドライバのできという観点ではホストOSとしてWindowsは一日の長があるかなと思っている.

      削除
  2. ノートパソコンを仕事場でデュアルディスプレイにしている場合,出先から帰った時に自動的に元の設定に戻らないことがある.最近のWindowsは賢いから自動的に戻ってくれる様だが,たまに接続する順番によっては元に戻らない.たとえば ... 1ディスプレイ.blogspot.com

    返信削除