SysGet

画面解像度やマルチモニタ関連の情報、そのほかシステム関連の情報を取得

SysGet, OutputVar, Sub-command [, Param3]

Parameters

引数名説明
OutputVar 取得結果を格納する変数名
Sub-command 取得する情報を指定
Param3 一部サブコマンドで使用するオプション

Sub-commands

MonitorCount
マルチモニタ環境でのモニタ数を取得。後述のSM_CMONITORSと違い、デスクトップの一部として使われていないモニタも数えられる。
MonitorPrimary
主モニタの番号を取得
Monitor [, N]
指定したモニタのデスクトップ領域での境界座標を取得。
Nにモニタ番号を指定する。
Nを省略した場合、主モニタの情報が取得される。
Nに存在しないモニタ番号を指定した場合などは、結果の変数はすべて空になる。
結果は「OutputVarLeft」「OutputVarTop」「OutputVarRight」「OutputVarBottom」というような変数に格納される。
MonitorWorkArea [, N]
モニタ番号Nのタスクバーの部分を除いた境界座標を取得
MonitorName [, N]
モニタ番号Nのシステム名を取得
(数値)
Sub-commandに下記で説明する番号を指定することで、各種の情報を取得できる。
Name Number Description
SM_CMONITORS80マルチモニタ環境でデスクトップ領域の表示に使用されているモニタの数を取得
SM_CMOUSEBUTTONS43マウスボタンの数 (マウスがないときは 0) を取得します。
SM_CXFULLSCREEN, SM_CYFULLSCREEN16,17最大化されたウィンドウのクライアント領域のサイズを取得します。
SM_CXMAXIMIZED, SM_CYMAXIMIZED61,62最大化されたウィンドウのサイズを取得します。
SM_CXMAXTRACK, SM_CYMAXTRACK59,60ウィンドウの最大トラッキングサイズを取得します。このサイズよりも大きくウィンドウの枠をドラッグすることはできません。アプリケーションで WM_GETMINMAXINFO メッセージを処理すると、最大トラッキングサイズが変更できます。
SM_CXMIN,SM_CYMIN28,29ウィンドウの最小サイズを取得します。
SM_CXMINIMIZED, SM_CYMINIMIZED57,58最小化されたウィンドウのデフォルトのサイズを取得します。
SM_CXMINTRACK, SM_CYMINTRACK34,35ウィンドウの最小トラッキングサイズを取得します。このサイズよりも小さくウィンドウの枠をドラッグすることはできません。アプリケーションで WM_GETMINMAXINFO メッセージを処理すると、最小トラッキングサイズが変更できます。
SM_CXSCREEN, SM_CYSCREEN0,1画面全体のサイズを取得します。
SM_CXVIRTUALSCREEN, SM_CYVIRTUALSCREEN78,79Windows 98 と Windows 2000:仮想画面の幅と高さをピクセル単位で取得します。仮想画面とは、すべてのモニタを囲む境界長方形のことです。SM_XVIRTUALSCREEN および SM_YVIRTUALSCREEN の各値は、仮想画面の左上隅の座標を表します。
SM_MOUSEPRESENT19マウスが接続されているかどうかを示す値を取得します。接続されているときは 0 以外の値が、接続されていないときは 0 が返ります。
SM_MOUSEWHEELPRESENT75ホイールを持つマウスが接続されているかどうかを示す値を取得します。接続されているときは 0 以外の値が、接続されていないときは 0 が返ります。
SM_NETWORK63ネットワークが存在するかどうかを示す値を取得します。存在するときは最下位ビットが 1 の値が、そうでないときは最下位ビットが 0 の値が返ります。最下位ビット以外のビットは予約されています。
SM_REMOTECONTROL8193リモートデスクトップで遠隔操作されているとき以外は「0」、遠隔操作されているときはゼロ以外。
SM_REMOTESESSION4096この値は、Terminal Services 環境で使うことを意図しています。呼び出し側プロセスが Terminal Services のクライアントセッションに関連付けられている場合は 0 以外の値(TRUE)が返ります。呼び出し側プロセスが Terminal Services のコンソールセッションに関連付けられている場合 0(FALSE)が返ります。
SM_SHOWSOUNDS70ユーザー補助の「サウンド解説を使う」が有効になっているかどうかを調べます。有効になっているときは 0 以外の値が、そうでないときは 0 が返ります。
SM_SHUTTINGDOWN8192シャットダウン中で無ければ「0」、シャットダウン中ならゼロ以外。
SM_SWAPBUTTON23左右のマウスボタンの機能を交換しているかどうかを示す値を取得します。交換しているときは 0 以外の値が、交換していないときは 0 が返ります。
SM_XVIRTUALSCREEN, SM_YVIRTUALSCREEN76,77Windows 98 と Windows 2000:仮想画面の左端と上端の座標を表します。仮想画面とは、すべてのモニタを囲む境界長方形のことです。SM_CXVIRTUALSCREEN および SM_CYVIRTUALSCREEN の各値は、仮想画面の幅と高さを表します。
SM_ARRANGE56最小化ウィンドウの配置方法を示す値を取得します。
SM_CLEANBOOT67システムがどのように起動されたかを示す値を取得します。次の値のいずれかになります。
0
通常のブート
1
「 Safe モード」でのブート
2
「ネットワークを使った Safe モード」でのブート
SM_CXBORDER, SM_CYBORDER5,6非立体的なウィンドウの縁の幅と高さを取得します。SM_CXEDGE とSM_CYEDGE も参照してください。
SM_CXCURSOR, SM_CYCURSOR13,14マウスカーソルのサイズを取得します。
SM_CXDOUBLECLK, SM_CYDOUBLECLK36,37ダブルクリックにおける 2 回目のクリック位置の許容範囲を取得します。1 回目のクリックの後、許容範囲内かつ許容時間内にもう一度マウスをクリックすると、ダブルクリックが行れたものとみなされます。
SM_CXDRAG, SM_CYDRAG68,69ドラッグ操作の開始とはみなされない範囲を取得します。マウスボタンを押した後、この範囲を越えてマウスを動かすと、ドラッグ操作が開始されたものとみなされます。
SM_CXEDGE, SM_CYEDGE45,46立体的なウィンドウの縁の幅と高さを取得します。SM_CXBORDER とSM_CYBORDER の 3D 版です。
SM_CXFIXEDFRAME, SM_CYFIXEDFRAME7,8タイトルバーを持ち、かつ、サイズが変更できないウィンドウにおける枠の幅と高さを取得します。SM_CXDLGFRAME,SM_CYDLGFRAME と同じです。
SM_CXFOCUSBORDER, SM_CYFOCUSBORDER83,84コントロールのフォーカス枠の太さを取得
SM_CXHSCROLL, SM_CYHSCROLL21,22水平スクロールバーの矢印の幅、または、水平スクロールバーの高さを取得します。
SM_CXHTHUMB10水平スクロールバーのつまみの幅を取得します。
SM_CXICON, SM_CYICON11,12アイコンのデフォルトのサイズを取得します。通常は 32×32 ピクセルです。
SM_CXICONSPACING, SM_CYICONSPACING38,39アイコンを整列するときに使われるグリッドのサイズを取得します。常に、SM_CXICON,SM_CYICON 以上になります。
SM_CXMENUCHECK, SM_CYMENUCHECK71,72メニューのチェックマークのサイズを取得します。
SM_CXMENUSIZE, SM_CYMENUSIZE54,55メニューバーに表示されるボタンのサイズを取得します。
SM_CXMINSPACING, SM_CYMINSPACING47,48アイコンを整列するときに使われるグリッドのサイズを取得します。常に、SM_CXICON, SM_CYICON 以上になります
SM_CXSIZE, SM_CYSIZE30,31ウィンドウのタイトルバー内のボタンのサイズを取得します。
SM_CXSIZEFRAME, SM_CYSIZEFRAME32,33サイズが変更できるウィンドウにおける枠の幅と高さを取得します。SM_CXFRAME,SM_CYFRAME と同じです。
SM_CXSMICON, SM_CYSMICON49,50小さいアイコンの推奨サイズを取得します。
SM_CXSMSIZE, SM_CYSMSIZE52,53さいタイトルバー内のボタンのサイズを取得します
SM_CXVSCROLL, SM_CYVSCROLL2,20垂直スクロールバーの幅、または、垂直スクロールバーの矢印の高さを取得します。
SM_CYCAPTION4タイトルバーの高さを取得します。
SM_CYKANJIWINDOW18画面下の漢字ウィンドウの高さを取得します。
SM_CYMENU15一行分のメニューバーの高さを取得します。
SM_CYSMCAPTION51小さなタイトルバーの高さを取得します。
SM_CYVTHUMB9垂直スクロールバーのつまみの高さを取得します。
SM_DBCSENABLED42USER.EXE がダブルバイト文字セット (DBCS) をサポートしているかどうかを示す値を取得します。サポートしているときは 0 以外の値が、サポートしていないときは 0 が返ります。
SM_DEBUG22USER.EXE がデバッグバージョンかどうかを示す値を取得します。デバッグバージョンのときは 0 以外の値が、デバッグバージョンでないときは 0 が返ります。
SM_IMMENABLED82IME(Input Method Manager/Input Method Editor)機能が有効になっている場合は 0 以外の値(TRUE)が返ります。無効になっている場合は 0(FALSE)が返ります。
SM_IMMENABLED は、システムが Unicode ベースのアプリケーションで、Unicode ベースの IME を使う準備ができているかどうかを示します。特定の言語に依存する IME が動作するかどうか確認するには、SM_DBCSENABLED とシステムの ANSI コードページをチェックしてください。それ以外の場合、ANSI/Unicode 間の変換が正しく実行されないことや、フォントやレジストリエントリのようなコンポーネントが存在しないことがあります。
SM_MEDIACENTER87OSがWindows XP Media Center Editionの場合ゼロ以外。
SM_MENUDROPALIGNMENT40メニューバーの項目に対して、ドロップダウンメニューが右寄せされるかどうかを示す値を取得します。右寄せされるときは 0 以外の値が、左寄せされるときは 0 が返ります。
SM_MIDEASTENABLED74ヘブライ語やアラビア語が利用可能なシステムかどうかを示す値を取得します。利用できるときは TRUE が返ります。
SM_PENWINDOWS41Window for Pen computing extensions がインストールされているかどうかを示す値を取得します。インストールされているときは 0 以外の値が、インストールされていないときは 0 が返ります。
SM_SECURE44セキュリティが存在するかどうかを示す値を取得します。存在するときは TRUE が、存在しないときは FALSE が返ります。
SM_SAMEDISPLAYFORMAT81複数のモニタが存在する場合、すべてのモニタが同じカラーフォーマットを使っているかどうかを表す値を取得します。すべてのモニタが同じカラーフォーマットを使っている場合、0 以外の値(TRUE)が返ります。それ以外の場合、0(FALSE)が返ります。2 台のモニタが同じ色深度(ビット数)を使っていても、カラーフォーマットが異なる可能性があることに注意してください。たとえば、各ピクセルの RGB のビット数が異なっている(16 ビットの場合 RGB が 565 というのが一般的ですが、アルファブレンディング;輝度の 1 ビットを追加して ARGB1555 という組み合わせもあります)ことや、RGB の順序が異なっていることもあります。
SM_SLOWMACHINE73コンピュータのプロセッサが遅いかどうかを示す値を取得します。遅いときは TRUE が、それ以外のときは FALSE が返ります。
SM_TABLETPC86OSがWindows XP Tablet PCの場合ゼロ以外。

Remarks

プライマリモニタの横幅と高さはA_ScreenWidth/A_ScreenHeight変数で参照できる

Related

WinGet

Example(s)

Example #1:
SysGet, MouseButtonCount, 43
SysGet, VirtualScreenWidth, 78
SysGet, VirtualScreenHeight, 79

Example #2: This is a working script that displays info about each monitor:
SysGet, MonitorCount, MonitorCount
SysGet, MonitorPrimary, MonitorPrimary
MsgBox, Monitor Count:`t%MonitorCount%`nPrimary Monitor:`t%MonitorPrimary%
Loop, %MonitorCount%
{
	SysGet, MonitorName, MonitorName, %A_Index%
	SysGet, Monitor, Monitor, %A_Index%
	SysGet, MonitorWorkArea, MonitorWorkArea, %A_Index%
	MsgBox, Monitor:`t#%A_Index%`nName:`t%MonitorName%`nLeft:`t%MonitorLeft% (%MonitorWorkAreaLeft% work)`nTop:`t%MonitorTop% (%MonitorWorkAreaTop% work)`nRight:`t%MonitorRight% (%MonitorWorkAreaRight% work)`nBottom:`t%MonitorBottom% (%MonitorWorkAreaBottom% work)
}