GetSystemMetrics 関数 (winuser.h)
指定したシステム メトリックまたはシステム構成設定を取得します。
GetSystemMetrics によって取得されるすべてのディメンションはピクセル単位であることに注意してください。
構文
int GetSystemMetrics(
[in] int nIndex
);
パラメーター
[in] nIndex
型: int
取得するシステム メトリックまたは構成設定。 このパラメーターには、次の値のいずれかを指定できます。 すべてのSM_CX* 値は幅であり、すべてのSM_CY* 値は高さであることに注意してください。 また、ブールデータを返すように設計されたすべての設定は 、TRUE を 0 以外の値として表し、 FALSE を ゼロ値として表します。
値 | 意味 |
---|---|
|
システムによって最小化されたウィンドウの配置方法を指定するフラグ。 詳細については、このトピックの「解説」セクションを参照してください。 |
|
システムの起動方法を示す 値。
|
|
デスクトップ上のディスプレイ モニターの数。 詳細については、このトピックの「解説」セクションを参照してください。 |
|
マウス上のボタンの数。マウスがインストールされていない場合は 0。 |
|
ラップトップまたはスレート モードの状態を反映し、スレート モードの場合は 0、それ以外の場合はゼロ以外の状態を反映します。 このシステム メトリックが変更されると、システムは LPARAM に "ConvertibleSlateMode" を 含むWM_SETTINGCHANGE 経由でブロードキャスト メッセージを送信します。 このシステム メトリックはデスクトップ PC には適用されません。 その場合は、 GetAutoRotationState を使用します。 |
|
ウィンドウの境界線の幅 (ピクセル単位)。 これは、3-D の外観のウィンドウのSM_CXEDGE値と同じです。 |
|
カーソルの標準幅 (ピクセル単位)。 |
|
この値は、SM_CXFIXEDFRAMEと同じです。 |
|
ダブルクリック シーケンス内の最初のクリックの位置を囲む四角形の幅 (ピクセル単位)。 2 回目のクリックは、SM_CXDOUBLECLKで定義された四角形内で行われ、2 回のクリックをダブルクリックしたとシステムが考慮するためにSM_CYDOUBLECLKする必要があります。 2 回のクリックも、指定した時間内に行う必要があります。
ダブルクリック四角形の幅を設定するには、 SystemParametersInfo をSPI_SETDOUBLECLKWIDTHと共に呼び出します。 |
|
マウス ポインターがドラッグ操作を開始する前に移動できる、マウスの下向きポイントの両側のピクセル数。 これにより、ユーザーは誤ってドラッグ操作を開始することなく、マウス ボタンを簡単にクリックして離すことができます。 この値が負の場合は、マウスダウン ポイントの左側から減算され、その右側に加算されます。 |
|
3-D 境界線の幅 (ピクセル単位)。 このメトリックは、SM_CXBORDERに対応する 3-D です。 |
|
キャプションを持つが、ピクセル単位ではサイズが大きくないウィンドウの周囲のフレームの太さ。
SM_CXFIXEDFRAMEは水平罫線の高さであり、SM_CYFIXEDFRAMEは垂直罫線の幅です。
この値は、SM_CXDLGFRAMEと同じです。 |
|
DrawFocusRect が描画するフォーカス四角形の左右の端の幅。 この値はピクセル単位です。
Windows 2000: この値はサポートされていません。 |
|
この値は、SM_CXSIZEFRAMEと同じです。 |
|
プライマリ ディスプレイ モニターの全画面表示ウィンドウのクライアント領域の幅 (ピクセル単位)。 システム タスク バーまたはアプリケーション デスクトップ ツール バーによって隠されていない画面の部分の座標を取得するには、SPI_GETWORKAREA値を指定して SystemParametersInfo 関数を呼び出します。 |
|
水平スクロール バー上の矢印ビットマップの幅 (ピクセル単位)。 |
|
水平スクロール バーのサム ボックスの幅 (ピクセル単位)。 |
|
システムのアイコンの大きな幅 (ピクセル単位)。 LoadIcon 関数は、SM_CXICONおよび指定SM_CYICONディメンションを持つアイコンのみを読み込むことができます。 詳細については、「 アイコンのサイズ 」を参照してください。 |
|
大きなアイコン ビューの項目のグリッド セルの幅 (ピクセル単位)。 各項目は、配置時にSM_CYICONSPACINGによってSM_CXICONSPACINGサイズの四角形に収まります。 この値は常に SM_CXICON 以上です。 |
|
プライマリ ディスプレイ モニターの最大化されたトップレベル ウィンドウの既定の幅 (ピクセル単位)。 |
|
キャプションとサイズ変更の境界線を持つウィンドウの既定の最大幅 (ピクセル単位)。 このメトリックは、デスクトップ全体を指します。 ユーザーは、これらのサイズより大きいサイズにウィンドウ フレームをドラッグすることはできません。 ウィンドウは、 WM_GETMINMAXINFO メッセージを処理することで、この値をオーバーライドできます。 |
|
既定のメニューチェックビットマップの幅 (ピクセル単位)。 |
|
複数のドキュメント インターフェイスで使用される子ウィンドウの閉じるボタンなどのメニュー バー ボタンの幅 (ピクセル単位)。 |
|
ウィンドウの最小幅 (ピクセル単位)。 |
|
最小化されたウィンドウの幅 (ピクセル単位)。 |
|
最小化されたウィンドウのグリッド セルの幅 (ピクセル単位)。 最小化された各ウィンドウは、配置時にこのサイズの四角形に収まります。 この値は常に SM_CXMINIMIZED 以上です。 |
|
ウィンドウの最小追跡幅 (ピクセル単位)。 ユーザーは、これらのサイズよりも小さいサイズにウィンドウ フレームをドラッグすることはできません。 ウィンドウは、 WM_GETMINMAXINFO メッセージを処理することで、この値をオーバーライドできます。 |
|
キャプション付きウィンドウの罫線のパディングの量 (ピクセル単位)。
Windows XP/2000: この値はサポートされていません。 |
|
プライマリ ディスプレイ モニターの画面の幅 (ピクセル単位)。 これは、GetDeviceCaps を呼び出して取得した値と同じです。 GetDeviceCaps(
hdcPrimaryMonitor, HORZRES)
|
|
ウィンドウキャプションまたはタイトル バー内のボタンの幅 (ピクセル単位)。 |
|
サイズを変更できるウィンドウの周囲のサイズ変更境界線の太さ (ピクセル単位)。
SM_CXSIZEFRAMEは水平罫線の幅で、SM_CYSIZEFRAMEは垂直境界線の高さです。
この値は、SM_CXFRAMEと同じです。 |
|
アイコンのシステムの小さな幅 (ピクセル単位)。 通常、小さいアイコンは、ウィンドウのキャプションと小さなアイコン ビューに表示されます。 詳細については、「 アイコンのサイズ 」を参照してください。 |
|
小さなキャプションボタンの幅 (ピクセル単位)。 |
|
仮想画面の幅 (ピクセル単位)。 仮想画面は、すべてのディスプレイ モニターの外接する四角形です。 SM_XVIRTUALSCREENメトリックは、仮想画面の左側の座標です。 |
|
垂直スクロール バーの幅 (ピクセル単位)。 |
|
ウィンドウの境界線の高さ (ピクセル単位)。 これは、3-D の外観のウィンドウのSM_CYEDGE値と同じです。 |
|
キャプション領域の高さ (ピクセル単位)。 |
|
カーソルのわずかな高さ (ピクセル単位)。 |
|
この値は、SM_CYFIXEDFRAMEと同じです。 |
|
ダブルクリック シーケンスでの最初のクリックの位置を中心とした四角形の高さ (ピクセル単位)。 2 回目のクリックは、SM_CXDOUBLECLKによって定義された四角形内で行われ、2 回のクリックがダブルクリックされたとシステムが考慮するためにSM_CYDOUBLECLKする必要があります。 2 回のクリックも、指定した時間内に行う必要があります。
ダブルクリック四角形の高さを設定するには、 SystemParametersInfo をSPI_SETDOUBLECLKHEIGHTと共に呼び出します。 |
|
ドラッグ操作が開始される前にマウス ポインターが移動できる、マウスの上下のピクセル数。 これにより、ユーザーは誤ってドラッグ操作を開始することなく、マウス ボタンを簡単にクリックして離すことができます。 この値が負の場合は、マウスダウン ポイントの上から減算され、その下に加算されます。 |
|
3-D 境界線の高さ (ピクセル単位)。 これは、SM_CYBORDERの 3-D に対応する 3-D です。 |
|
キャプションを持つが、ピクセル単位ではサイズが大きくないウィンドウの周囲のフレームの太さ。
SM_CXFIXEDFRAMEは水平罫線の高さであり、SM_CYFIXEDFRAMEは垂直罫線の幅です。
この値は、SM_CYDLGFRAMEと同じです。 |
|
DrawFocusRect によって描画されるフォーカス四角形の上端と下端の高さ。 この値はピクセル単位です。
Windows 2000: この値はサポートされていません。 |
|
この値は、SM_CYSIZEFRAMEと同じです。 |
|
プライマリ ディスプレイ モニターの全画面表示ウィンドウのクライアント領域の高さ (ピクセル単位)。 システム タスク バーまたはアプリケーション デスクトップ ツール バーによって隠されない画面の部分の座標を取得するには、SPI_GETWORKAREA値を指定して SystemParametersInfo 関数を呼び出します。 |
|
水平スクロール バーの高さ (ピクセル単位)。 |
|
アイコンのシステムの大きな高さ (ピクセル単位)。 LoadIcon 関数は、SM_CXICONおよび指定SM_CYICONディメンションを持つアイコンのみを読み込むことができます。 詳細については、「 アイコンのサイズ 」を参照してください。 |
|
大きなアイコン ビューの項目のグリッド セルの高さ (ピクセル単位)。 各項目は、配置時にSM_CYICONSPACINGによってSM_CXICONSPACINGサイズの四角形に収まります。 この値は常に SM_CYICON 以上です。 |
|
システムの 2 バイト文字セット バージョンの場合、これは画面の下部にある漢字ウィンドウの高さ (ピクセル単位) です。 |
|
プライマリ ディスプレイ モニターの最大化されたトップレベル ウィンドウの既定の高さ (ピクセル単位)。 |
|
キャプションとサイズ変更の境界線を持つウィンドウの既定の最大高さ (ピクセル単位)。 このメトリックは、デスクトップ全体を指します。 ユーザーは、これらのサイズより大きいサイズにウィンドウ フレームをドラッグすることはできません。 ウィンドウは、 WM_GETMINMAXINFO メッセージを処理することで、この値をオーバーライドできます。 |
|
1 行のメニュー バーの高さ (ピクセル単位)。 |
|
既定のメニューチェックビットマップの高さ (ピクセル単位)。 |
|
複数のドキュメント インターフェイスで使用される子ウィンドウの閉じるボタンなどのメニュー バー ボタンの高さ (ピクセル単位)。 |
|
ウィンドウの最小高さ (ピクセル単位)。 |
|
最小化されたウィンドウの高さ (ピクセル単位)。 |
|
最小化されたウィンドウのグリッド セルの高さ (ピクセル単位)。 最小化された各ウィンドウは、配置時にこのサイズの四角形に収まります。 この値は常に SM_CYMINIMIZED 以上です。 |
|
ウィンドウの最小追跡高さ (ピクセル単位)。 ユーザーは、これらのサイズよりも小さいサイズにウィンドウ フレームをドラッグすることはできません。 ウィンドウは、 WM_GETMINMAXINFO メッセージを処理することで、この値をオーバーライドできます。 |
|
プライマリ ディスプレイ モニターの画面の高さ (ピクセル単位)。 これは、GetDeviceCaps を呼び出して取得した値と同じです。 GetDeviceCaps(
hdcPrimaryMonitor, VERTRES)
|
|
ウィンドウ キャプションまたはタイトル バー内のボタンの高さ (ピクセル単位)。 |
|
サイズを変更できるウィンドウの周囲のサイズ変更境界線の太さ (ピクセル単位)。
SM_CXSIZEFRAMEは水平罫線の幅で、SM_CYSIZEFRAMEは垂直境界線の高さです。
この値は、SM_CYFRAMEと同じです。 |
|
小さなキャプションの高さ (ピクセル単位)。 |
|
アイコンのシステムの小さな高さ (ピクセル単位)。 通常、小さいアイコンは、ウィンドウのキャプションと小さなアイコン ビューに表示されます。 詳細については、「 アイコンのサイズ 」を参照してください。 |
|
小さなキャプションボタンの高さ (ピクセル単位)。 |
|
仮想画面の高さ (ピクセル単位)。 仮想画面は、すべてのディスプレイ モニターの外接する四角形です。 SM_YVIRTUALSCREEN メトリックは、仮想画面の上部の座標です。 |
|
垂直スクロール バー上の矢印ビットマップの高さ (ピクセル単位)。 |
|
垂直スクロール バーのサム ボックスの高さ (ピクセル単位)。 |
|
User32.dll が DBCS をサポートする場合は 0 以外。それ以外の場合は 0。 |
|
User.exe のデバッグ バージョンがインストールされている場合は 0 以外。それ以外の場合は 0。 |
|
現在のオペレーティング システムが Windows 7 または Windows Server 2008 R2 で、タブレット PC 入力サービスが開始されている場合は 0 以外。それ以外の場合は 0。 戻り値は、デバイスでサポートされているデジタイザー入力の種類を指定するビットマスクです。 詳細については、「解説」を参照してください。
Windows Server 2008、Windows Vista、Windows XP/2000: この値はサポートされていません。 |
|
入力メソッド マネージャー/入力メソッドエディター機能が有効な場合は 0 以外、それ以外の場合は 0。
SM_IMMENABLEDは、システムが Unicode アプリケーションで Unicode ベースの IME を使用する準備ができているかどうかを示します。 言語に依存する IME が動作することを確認するには、システム ANSI コード ページをチェック SM_DBCSENABLEDします。 そうしないと、ANSI から Unicode への変換が正しく実行されないか、フォントやレジストリ設定などの一部のコンポーネントが存在しない可能性があります。 |
|
システムにデジタイザーがある場合は 0 以外。それ以外の場合は 0。
SM_MAXIMUMTOUCHESは、システム内のすべてのデジタイザーでサポートされている連絡先の最大数の合計を返します。 システムにシングルタッチ デジタイザーしかない場合、戻り値は 1 です。 システムにマルチタッチ デジタイザーがある場合、戻り値はハードウェアが提供できる同時接触の数です。 Windows Server 2008、Windows Vista、Windows XP/2000: この値はサポートされていません。 |
|
現在のオペレーティング システムが Windows XP、Media Center Edition の場合は 0 以外。そうでない場合は 0。 |
|
ドロップダウン メニューが対応するメニュー バー項目と右揃えの場合は 0 以外。メニューが左揃えの場合は 0。 |
|
システムがヘブライ語とアラビア語に対して有効になっている場合は 0 以外、有効でない場合は 0。 |
|
マウスがインストールされている場合は 0 以外。それ以外の場合は 0。 この値は、仮想マウスのサポートと、一部のシステムがマウスの存在ではなくポートの存在を検出するため、ほとんど 0 になることはほとんどありません。 |
|
水平スクロール ホイールを持つマウスがインストールされている場合は 0 以外。それ以外の場合は 0。 |
|
垂直スクロール ホイールを持つマウスがインストールされている場合は 0 以外。それ以外の場合は 0。 |
|
ネットワークが存在する場合は、最下位ビットが設定されます。それ以外の場合は、クリアされます。 その他のビットは、将来使用するために予約されています。 |
|
Microsoft Windows for Pen コンピューティング拡張機能がインストールされている場合は 0 以外。それ以外の場合は 0。 |
|
このシステム メトリックは、現在のターミナル サーバー セッションがリモートで制御されているかどうかを判断するために、ターミナル サービス環境で使用されます。 現在のセッションがリモートで制御されている場合、その値は 0 以外です。それ以外の場合は 0。
ターミナル サービス マネージャー (tsadmin.msc) や shadow.exe などのターミナル サービス管理ツールを使用して、リモート セッションを制御できます。 セッションがリモートで制御されている場合、別のユーザーはそのセッションの内容を表示し、そのセッションと対話できる可能性があります。 |
|
このシステム メトリックは、ターミナル サービス環境で使用されます。 呼び出しプロセスがターミナル サービス クライアント セッションに関連付けられている場合、戻り値は 0 以外です。 呼び出しプロセスがターミナル サービス コンソール セッションに関連付けられている場合、戻り値は 0 です。 Windows Server 2003 および Windows XP: コンソール セッションは、必ずしも物理コンソールであるとは限りません。 詳細については、「 WTSGetActiveConsoleSessionId」を参照してください。 |
|
すべてのディスプレイ モニターの色形式が同じ場合は 0 以外、それ以外の場合は 0。 2 つのディスプレイのビット深度は同じですが、色の形式は異なります。 たとえば、赤、緑、青のピクセルは、異なるビット数でエンコードできます。または、それらのビットはピクセルの色の値の異なる場所に配置できます。 |
|
このシステム メトリックは無視する必要があります。常に 0 を返します。 |
|
システムが Windows Server 2003 R2 の場合のビルド番号。それ以外の場合は 0。 |
|
ユーザーがアプリケーションで情報を視覚的に提示する必要がある場合、それ以外の場合は可聴形式でのみ情報を提示する必要がある場合は 0 以外。それ以外の場合は 0。 |
|
現在のセッションがシャットダウンしている場合は 0 以外。それ以外の場合は 0。
Windows 2000: この値はサポートされていません。 |
|
コンピューターにローエンド (低速) プロセッサがある場合は 0 以外。それ以外の場合は 0。 |
|
現在のオペレーティング システムが Windows 7 Starter Edition、Windows Vista Starter、または Windows XP Starter Edition の場合は 0 以外。それ以外の場合は 0。 |
|
マウスの左右のボタンの意味が入れ替わる場合は 0 以外。それ以外の場合は 0。 |
|
ドッキング モードの状態を反映し、ドッキング解除モードの場合は 0、それ以外の場合は 0 以外の状態を反映します。 このシステム メトリックが変更されると、システムは LPARAM に "SystemDockMode" を 含むWM_SETTINGCHANGE 経由でブロードキャスト メッセージを送信します。 |
|
現在のオペレーティング システムが Windows XP タブレット PC エディションの場合、または現在のオペレーティング システムが Windows Vista または Windows 7 でタブレット PC 入力サービスが開始されている場合は 0 以外。それ以外の場合は 0。 SM_DIGITIZER設定は、Windows 7 または Windows Server 2008 R2 を実行しているデバイスでサポートされるデジタイザー入力の種類を示します。 詳細については、「解説」を参照してください。 |
|
仮想画面の左側の座標。 仮想画面は、すべてのディスプレイ モニターの外接する四角形です。 SM_CXVIRTUALSCREEN メトリックは、仮想画面の幅です。 |
|
仮想画面の上部の座標。 仮想画面は、すべてのディスプレイ モニターの外接する四角形です。 SM_CYVIRTUALSCREEN メトリックは、仮想画面の高さです。 |
戻り値
型: int
関数が成功した場合、戻り値は要求されたシステム メトリックまたは構成設定です。
関数が失敗した場合、戻り値は 0 になります。 GetLastError では、拡張エラー情報は提供されません。
注釈
システム メトリックは、表示ごとに異なる場合があります。
GetSystemMetrics(SM_CMONITORS) は、表示されているディスプレイ モニターのみをカウントします。 これは、ミラーリング ドライバーに関連付けられている可視ディスプレイ モニターと非表示の擬似モニターの両方を列挙する EnumDisplayMonitors とは異なります。 非表示の擬似モニターは、リモート処理またはその他の目的でアプリケーション描画をミラーするために使用される擬似デバイスに関連付けられます。
SM_ARRANGE設定は、最小化されたウィンドウをシステムがどのように配置するかを指定し、開始位置と方向で構成されます。 開始位置には、次のいずれかの値を指定できます。
値 | 意味 |
---|---|
ARW_BOTTOMLEFT | 画面の左下隅から開始します。 既定の位置。 |
ARW_BOTTOMRIGHT | 画面の右下隅から開始します。 ARW_STARTRIGHTと同じです。 |
ARW_TOPLEFT | 画面の左上隅から開始します。 ARW_STARTTOPと同じです。 |
ARW_TOPRIGHT | 画面の右上隅から開始します。 ARW_STARTTOPと同等 |SRW_STARTRIGHT。 |
最小化されたウィンドウを配置する方向は、次のいずれかの値になります。
値 | 意味 |
---|---|
ARW_DOWN | 上下に配置します。 |
ARW_HIDE | 最小化されたウィンドウを非表示にするには、画面の表示領域からウィンドウを移動します。 |
ARW_LEFT | 左右に配置します。 |
ARW_RIGHT | 左右に配置します。 |
ARW_UP | 垂直方向、下から上に配置します。 |
SM_DIGITIZER設定では、Windows 7 または Windows Server 2008 R2 を実行しているデバイスにインストールされるデジタイザーの種類を指定します。 戻り値は、次の値の 1 つ以上を指定するビットマスクです。
値 | 意味 |
---|---|
NID_INTEGRATED_TOUCH 0x01 |
このデバイスには、統合されたタッチ デジタイザーがあります。 |
NID_EXTERNAL_TOUCH 0x02 |
このデバイスには、外部タッチ デジタイザーがあります。 |
NID_INTEGRATED_PEN 0x04 |
このデバイスには、ペン デジタイザーが統合されています。 |
NID_EXTERNAL_PEN 0x08 |
デバイスには、外部ペン デジタイザーがあります。 |
NID_MULTI_INPUT 0x40 |
このデバイスは、デジタイザー入力の複数のソースをサポートしています。 |
NID_READY 0x80 |
デバイスはデジタイザー入力を受け取る準備ができています。 |
この API は DPI 対応ではなく、呼び出し元スレッドがモニターごとの DPI 対応の場合は使用しないでください。 この API の DPI 対応バージョンについては、「 GetSystemMetricsForDPI」を参照してください。 DPI 対応の詳細については、 Windows High DPI のドキュメントを参照してください。
例
次の例では 、GetSystemMetrics 関数を使用して、マウスがインストールされているかどうか、およびマウス ボタンがスワップされているかどうかを判断します。 この例では、 SystemParametersInfo 関数を使用して、マウスのしきい値と速度を取得します。 コンソールに情報が表示されます。
#include <windows.h>
#include <stdio.h>
#pragma comment(lib, "user32.lib")
void main()
{
BOOL fResult;
int aMouseInfo[3];
fResult = GetSystemMetrics(SM_MOUSEPRESENT);
if (fResult == 0)
printf("No mouse installed.\n");
else
{
printf("Mouse installed.\n");
// Determine whether the buttons are swapped.
fResult = GetSystemMetrics(SM_SWAPBUTTON);
if (fResult == 0)
printf("Buttons not swapped.\n");
else printf("Buttons swapped.\n");
// Get the mouse speed and the threshold values.
fResult = SystemParametersInfo(
SPI_GETMOUSE, // get mouse information
0, // not used
&aMouseInfo, // holds mouse information
0); // not used
if( fResult )
{
printf("Speed: %d\n", aMouseInfo[2]);
printf("Threshold (x,y): %d,%d\n",
aMouseInfo[0], aMouseInfo[1]);
}
}
}
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | winuser.h (Windows.h を含む) |
Library | User32.lib |
[DLL] | User32.dll |
API セット | ext-ms-win-ntuser-sysparams-ext-l1-1-0 (Windows 8で導入) |