<Return[G]><Top>

GetSystemMetrics

Declare Function Api_GetSystemMetrics& Lib "user32" Alias "GetSystemMetrics" (ByVal nIndex&)

Declare Function GetSystemMetrics Lib "user32" Alias "GetSystemMetrics" (ByVal nIndex As Long) As Long

さまざまなシステムメトリックの値(表示要素の幅と高さ)とシステムの現在の構成を取得する。表示要素とは、ウィンドウの一部、またはシステムが表示する画面の一部を意味する。GetSystemMetrics 関数は、すべてのサイズをピクセル単位で取得する。

パラメータ
nIndex
    取得するべきシステムメトリックまたは現在の構成を指定する。

    SM_CX*(System Metric Configuration x)は幅を、SM_CY*(System Metric Configuration y)は高さを表す。

    次の値のいずれかを指定する。

    値                                            

意味                                                                                                                              

    SM_ARRANGE

最小化ウィンドウの配置方法を示す値を取得する。

    SM_CLEANBOOT

システムがどのように起動されたかを示す値を取得する。

 

0

通常の起動

 

1

「Safe モード」での起動

 

2

「ネットワークを使った Safe モード」での起動

 

Safe モードによる起動を行うと、ユーザーのスタートアップファイルは無視される。

    SM_CMONITORS

Windows 98 と Windows 2000:デスクトップ上のモニタの数(マルチモニタ)を取得する。

    SM_CMOUSEBUTTONS

マウスボタンの数(マウスがないときは 0)を取得する。

    SM_CXBORDER ,

                        SM_CYBORDER

立体効果のないウィンドウの境界の幅と高さを取得する。立体効果付きウィンドウの SM_CXEDGE とSM_CYEDGE の各値に相当する。

    SM_CXCURSOR ,

                        SM_CYCURSOR

カーソル(マウスカーソル)の幅と高さを取得する。システムは、他のサイズのカーソルを作成することは

できない。

    SM_CXDLGFRAME  ,

                   SM_CYDLGFRAME

SM_CXFIXEDFRAME および SM_CYFIXEDFRAME と同じことを意味する。

 

    SM_CXDOUBLECLK  ,

                 SM_CYDOUBLECLK

 

 

 

 

ダブルクリック操作を行う際に、最初のクリックが発生したときのカーソル(マウスカーソル)の位置を基

準として、2 回目のクリック位置の許容範囲の幅と高さをピクセル単位で取得する。1 回目のクリックの

後、この許容範囲内でもう一度マウスをクリックすると、ダブルクリックが行われたものと見なされる。

(これら 2 回のクリックが許容時間内で発生することも必要である。)
ダブルクリックの範囲を規定する長方形の幅と高さを設定するには、SPI_SETDOUBLECLKHEIGHT

とSPI_SETDOUBLECLKWIDTH の各フラグを指定して、SystemParametersInfo 関数を呼び出す。

    SM_CXDRAG , SM_CYDRAG

 

 

ドラッグ操作の開始とは見なされない範囲が既定で設定されているが、この範囲に相当する長方形の

幅と高さをピクセル単位で取得する。マウスボタンを押した後、この範囲を越えてマウスを動かすと、

ドラッグ操作が開始されたものと見なされる。この結果、ユーザーは意図していない場所でドラッグ操作

を開始することなく、簡単にマウスボタンをクリックし、その後放すことができる。

    SM_CXEDGE , SM_CYEDGE

 

立体効果付きのウィンドウの境界線の幅と高さを取得する。SM_CXBORDER と SM_CYBORDER

の 3D 版である。

    SM_CXFIXEDFRAME ,

                SM_CYFIXEDFRAME

 

タイトルバーがあり、サイズが変更できないウィンドウの周囲を囲む枠の幅と高さをピクセル単位で取得す

る。SM_CXFIXEDFRAME は垂直枠の幅、SM_CYFIXEDFRAME は水平枠の高さを表す。
SM_CXDLGFRAME および SM_CYDLGFRAME と同じことを意味する。

    SM_CXFRAME ,

                          SM_CYFRAME

SM_CXSIZEFRAME および SM_CYSIZEFRAME と同じことを意味する。

 

    SM_CXFULLSCREEN ,

               SM_CYFULLSCREEN

 

プライマリモニタの最大化ウィンドウのクライアント領域の幅と高さを取得する。システムのタスクバーやア

プリケーションのツールバーが占有する領域を除いた画面領域の座標を取得するには、

SPI_GETWORKAREA を指定して SystemParametersInfo 関数を使う。

    SM_CXHSCROLL ,

                      SM_CYHSCROLL

水平スクロールバーの矢印の幅、または水平スクロールバーの高さをピクセル単位で取得する。

 

    SM_CXHTHUMB

水平スクロールバーのスクロールボックス(つまみ)の幅をピクセル単位で取得する。

    SM_CXICON ,   SM_CYICON

 

アイコンの既定の幅と高さをピクセル単位で取得する。LoadIcon 関数がロードできるアイコンは、このサ

イズのものに限定されている。

    SM_CXICONSPACING ,

              SM_CYICONSPACING

 

アイコンを整列するときに使われるグリッドのサイズをピクセル単位で取得する。整列を行うと、各アイテ

ム(アイコン)はこのサイズの長方形の中に収容される。これらの値は必ず、SM_CXICON および

SM_CYICON 以上の大きさになる。

    SM_CXMAXIMIZED ,

                  SM_CYMAXIMIZED

プライマリモニタの最大化ウィンドウのサイズをピクセル単位で取得する。

 

    SM_CXMAXTRACK ,

                   SM_CYMAXTRACK

 

タイトルバーがあり、サイズが変更できないウィンドウの既定の最大サイズを取得する。このサイズは、

デスクトップ全体に相当する。ユーザーは、このサイズを超えてウィンドウの枠をドラッグすることはできない。アプリケーション内で WM_GETMINMAXINFO メッセージを処理すると、これらの値を無効にできる。

    SM_CXMENUCHECK ,

               SM_CYMENUCHECK

メニューのチェックマークの既定のサイズをピクセル単位で取得する。

 

    SM_CXMENUSIZE ,

                   SM_CYMENUSIZE

マルチドキュメントインターフェイス(MDI)の子ウィンドウの「閉じる」ボタンなど、メニューバーに表示さ

れるボタンのサイズをピクセル単位で取得する。

    SM_CXMIN , SM_CYMIN

ウィンドウの最小サイズの幅と高さをピクセル単位で取得する。

    SM_CXMINIMIZED ,

                   SM_CYMINIMIZED

最小化ウィンドウの通常のサイズを取得する。

 

    SM_CXMINSPACING ,

                SM_CYMINSPACING

 

最小化ウィンドウの配置に使われるグリッドのサイズを取得する。整列を行うと、各最小化ウィンドウは

このサイズの長方形の中に収容される。これらの値は必ず、SM_CXMINIMIZED および

SM_CYMINIMIZED 以上の大きさになる。

    SM_CXMINTRACK ,

                   SM_CYMINTRACK

 

ウィンドウの最小トラッキングサイズの幅と高さを取得する。ユーザーはウィンドウの枠をドラッグする際

に、このサイズより小さいウィンドウを指定することはできない。アプリケーション内で

WM_GETMINMAXINFO メッセージを処理すると、これらの値を無効にできる。

    SM_CXSCREEN ,

                        SM_CYSCREEN

プライマリモニタの画面全体の幅と高さを取得する。これらは、GetDeviceCaps(hdcPrimaryMonitor,

HORZRES/VERTRES) を呼び出して取得するのと同じ値である。

    SM_CXSIZE , SM_CYSIZE

ウィンドウのタイトルバー内のボタンの幅と高さをピクセル単位で取得する。

    SM_CXSIZEFRAME ,

                  SM_CYSIZEFRAME

 

サイズ変更可能なウィンドウの周囲を囲む枠の幅と高さをピクセル単位で取得する。

SM_CXSIZEFRAME は垂直枠の幅、SM_CYSIZEFRAME は水平枠の高さを表す。
SM_CXFRAME および SM_CYFRAME と同じことを意味する。

    SM_CXSMICON ,

                        SM_CYSMICON

小アイコンの推奨サイズをピクセル単位で取得する。小アイコンは通常、ウィンドウのタイトルバー内、

および(エクスプローラなどの)小アイコンの一覧で表示される。

    SM_CXSMSIZE ,

                         SM_CYSMSIZE

タイトルバー内の小さいボタンのサイズをピクセル単位で取得する。

 

    SM_CXVIRTUALSCREEN ,

         SM_CYVIRTUALSCREEN

 

Windows 98 と Windows 2000:仮想画面の幅と高さをピクセル単位で取得する。仮想画面とは、す

べてのモニタを囲む境界長方形のことである。SM_XVIRTUALSCREEN および

SM_YVIRTUALSCREEN の各値は、仮想画面の左上隅の座標を表す。

    SM_CXVSCROLL ,

                      SM_CYVSCROLL

垂直スクロールバーの幅、または垂直スクロールバーの矢印の高さをピクセル単位で取得する。

 

    SM_CYCAPTION

通常のタイトルバーの高さをピクセル単位で取得する。

    SM_CYKANJIWINDOW

ダブルバイト文字セット(DBCS)を使うシステムで、画面下の漢字ウィンドウの高さを取得する。

    SM_CYMENU

 1 行分のメニューバーの高さをピクセル単位で取得する。

    SM_CYSMCAPTION

小さなタイトルバーの高さを取得する。

    SM_CYVTHUMB

垂直スクロールバーのスクロールボックス(つまみ)の高さを取得する。

    SM_DBCSENABLED

 

 

ダブルバイト文字セット(DBCS)の User.exe がインストール済みかどうかを示す値を取得する。

インストール済みの場合は 0 以外の値が、インストールされていない場合は 0 が返る。
SM_DEBUG デバッグ版の User.exe がインストール済みかどうかを示す値を取得する。デバッグ版が

インストール済みの場合は 0 以外の値(TRUE)が、デバッグ版がインストールされていない場合は

0(FALSE)が返る。

    SM_IMMENABLED

 

 

 

Windows 2000:IME(Input Method Manager/Input Method Editor)機能が有効になっている場合は 0 以外の値(TRUE)が返る。無効になっている場合は 0(FALSE)が返る。
SM_IMMENABLED は、システムが Unicode ベースのアプリケーションで、Unicode ベースの IME

を使う準備ができているかどうかを示す。特定の言語に依存する IME が動作するかどうか確認するには、SM_DBCSENABLED とシステムの ANSI コードページをチェックする。それ以外の場合、

ANSI/Unicode 間の変換が正しく実行されないことや、フォントやレジストリエントリのようなコンポーネン

トが存在しないことがある。

    SM_MENUDROPALIGNMENT

 

メニューバーの項目に対して、ドロップダウンメニューを右寄せするかどうかを示す値を取得する。右寄

せする場合は 0 以外の値(TRUE)が、左寄せする場合は 0(FALSE)が返る。

    SM_MIDEASTENABLED

 

 ヘブライ語やアラビア語(右から左へ表示)が利用可能なシステムかどうかを示す値を取得する。利

用可能な場合、0 以外の値(TRUE)が返る。

    SM_MOUSEPRESENT

 

マウスが接続されているかどうかを示す値を取得する。接続されている場合は 0 以外の値(TRUE)が、接続されていない場合は 0(FALSE)が返る。

    SM_MOUSEWHEELPRESENT

 

 

Windows NT 4.0 以降と Windows 98:ホイール付きのマウスが接続されているかどうかを示す値を

取得する。接続されている場合は 0 以外の値(TRUE)が、接続されていない場合は 0

(FALSE)が返る。

    SM_NETWORK

 

ネットワークが存在するかどうかを示す値を取得する。存在する場合は最下位ビットが 1 の値が、存在

しない場合は最下位ビットが 0 の値が返る。他のビットは将来の使用に備えて予約されている。

    SM_PENWINDOWS

 

 

Windows for Pen computing extensions がインストールされているかどうかを示す値を取得する。イン

ストールされている場合は 0 以外の値(TRUE)が、インストールされていない場合は 0(FALSE)

が返る。

    SM_REMOTESESSION

 

 

 

Windows NT 4.0 SP4 以降:この値は、Terminal Services 環境で使うことを意図している。呼び出

し側プロセスが Terminal Services のクライアントセッションに関連付けられている場合は 0 以外の値

(TRUE)が返る。呼び出し側プロセスが Terminal Services のコンソールセッションに関連付けられ

ている場合 0(FALSE)が返る。

    SM_SECURE

 

セキュリティが存在するかどうかを示す値を取得する。存在する場合は 0 以外の値(TRUE)が、存

在しない場合は 0(FALSE)が返る。

    SM_SAMEDISPLAYFORMAT

 

 

 

 

 

Windows 98 と Windows 2000:複数のモニタが存在する場合、すべてのモニタが同じカラーフォーマ

ットを使っているかどうかを表す値を取得する。すべてのモニタが同じカラーフォーマットを使っている場

合、0 以外の値(TRUE)が返る。それ以外の場合、0(FALSE)が返る。2 台のモニタが同じ

色深度(ビット数)を使っていても、カラーフォーマットが異なる可能性があることに注意すること。たと

えば、各ピクセルの RGB のビット数が異なっている(16 ビットの場合 RGB が 565 というのが一般的

であるが、アルファブレンディング;輝度の 1 ビットを追加して ARGB1555 という組み合わせもある)こ

とや、RGB の順序が異なっていることもある。

    SM_SHOWSOUNDS

 

ユーザー補助機能の「サウンド解説を使う」が有効になっているかどうかを調べる。有効になっている

場合は 0 以外の値(TRUE)が、無効になっている場合は 0 が返る。

    SM_SLOWMACHINE

 

コンピュータのプロセッサが遅いかどうかを示す値を取得する。遅い場合は 0 以外の値(TRUE)

が、それ以外の場合は 0(FALSE)が返る。

    SM_SWAPBUTTON

 

左右のマウスボタンの機能を交換しているかどうかを示す値を取得する。交換している場合は 0 以外

の値(TRUE)が、交換していない場合は 0(FALSE)が返る。

    SM_XVIRTUALSCREEN ,

             SM_YVIRTUALSCREEN

 

Windows 98 と Windows 2000:仮想画面の左端と上端の座標を表す。仮想画面とは、すべての

モニタを囲む境界長方形のことである。SM_CXVIRTUALSCREEN および

SM_CYVIRTUALSCREEN の各値は、仮想画面の幅と高さを表す。


戻り値
    関数が成功すると、要求した値または現在の構成が返る。
    関数が失敗すると、0 が返る。GetLastError 関数は、拡張エラー情報を提供しない。