GetSystemMetrics 関数 (winuser.h)

指定したシステム メトリックまたはシステム構成設定を取得します。

GetSystemMetrics によって取得されるすべてのディメンションはピクセル単位であることに注意してください。

構文

int GetSystemMetrics(
  [in] int nIndex
);

パラメーター

[in] nIndex

型: int

取得するシステム メトリックまたは構成設定。 このパラメーターには、次の値のいずれかを指定できます。 すべてのSM_CX* 値は幅であり、すべてのSM_CY* 値は高さであることに注意してください。 また、ブールデータを返すように設計されたすべての設定は 、TRUE を 0 以外の値として表し、 FALSE を ゼロ値として表します。

意味
SM_ARRANGE
56
システムによって最小化されたウィンドウの配置方法を指定するフラグ。 詳細については、このトピックの「解説」セクションを参照してください。
SM_CLEANBOOT
67
システムの起動方法を示す 値。
  • 0 標準ブート
  • 1 フェールセーフ ブート
  • 2 ネットワーク ブートでフェールセーフ
フェールセーフ ブート (SafeBoot、セーフ モード、クリーン ブートとも呼ばれます) は、ユーザーのスタートアップ ファイルをバイパスします。
SM_CMONITORS
80
デスクトップ上のディスプレイ モニターの数。 詳細については、このトピックの「解説」セクションを参照してください。
SM_CMOUSEBUTTONS
43
マウス上のボタンの数。マウスがインストールされていない場合は 0。
SM_CONVERTIBLESLATEMODE
0x2003
ラップトップまたはスレート モードの状態を反映し、スレート モードの場合は 0、それ以外の場合はゼロ以外の状態を反映します。 このシステム メトリックが変更されると、システムは LPARAM に "ConvertibleSlateMode" を 含むWM_SETTINGCHANGE 経由でブロードキャスト メッセージを送信します。 このシステム メトリックはデスクトップ PC には適用されません。 その場合は、 GetAutoRotationState を使用します
SM_CXBORDER
5
ウィンドウの境界線の幅 (ピクセル単位)。 これは、3-D の外観のウィンドウのSM_CXEDGE値と同じです。
SM_CXCURSOR
13
カーソルの標準幅 (ピクセル単位)。
SM_CXDLGFRAME
7
この値は、SM_CXFIXEDFRAMEと同じです。
SM_CXDOUBLECLK
36
ダブルクリック シーケンス内の最初のクリックの位置を囲む四角形の幅 (ピクセル単位)。 2 回目のクリックは、SM_CXDOUBLECLKで定義された四角形内で行われ、2 回のクリックをダブルクリックしたとシステムが考慮するためにSM_CYDOUBLECLKする必要があります。 2 回のクリックも、指定した時間内に行う必要があります。

ダブルクリック四角形の幅を設定するには、 SystemParametersInfo をSPI_SETDOUBLECLKWIDTHと共に呼び出します。

SM_CXDRAG
68
マウス ポインターがドラッグ操作を開始する前に移動できる、マウスの下向きポイントの両側のピクセル数。 これにより、ユーザーは誤ってドラッグ操作を開始することなく、マウス ボタンを簡単にクリックして離すことができます。 この値が負の場合は、マウスダウン ポイントの左側から減算され、その右側に加算されます。
SM_CXEDGE
45
3-D 境界線の幅 (ピクセル単位)。 このメトリックは、SM_CXBORDERに対応する 3-D です。
SM_CXFIXEDFRAME
7
キャプションを持つが、ピクセル単位ではサイズが大きくないウィンドウの周囲のフレームの太さ。 SM_CXFIXEDFRAMEは水平罫線の高さであり、SM_CYFIXEDFRAMEは垂直罫線の幅です。

この値は、SM_CXDLGFRAMEと同じです。

SM_CXFOCUSBORDER
83
DrawFocusRect が描画するフォーカス四角形の左右の端の幅。 この値はピクセル単位です。

Windows 2000: この値はサポートされていません。

SM_CXFRAME
32
この値は、SM_CXSIZEFRAMEと同じです。
SM_CXFULLSCREEN
16
プライマリ ディスプレイ モニターの全画面表示ウィンドウのクライアント領域の幅 (ピクセル単位)。 システム タスク バーまたはアプリケーション デスクトップ ツール バーによって隠されていない画面の部分の座標を取得するには、SPI_GETWORKAREA値を指定して SystemParametersInfo 関数を呼び出します。
SM_CXHSCROLL
21
水平スクロール バー上の矢印ビットマップの幅 (ピクセル単位)。
SM_CXHTHUMB
10
水平スクロール バーのサム ボックスの幅 (ピクセル単位)。
SM_CXICON
11
システムのアイコンの大きな幅 (ピクセル単位)。 LoadIcon 関数は、SM_CXICONおよび指定SM_CYICONディメンションを持つアイコンのみを読み込むことができます。 詳細については、「 アイコンのサイズ 」を参照してください。
SM_CXICONSPACING
38
大きなアイコン ビューの項目のグリッド セルの幅 (ピクセル単位)。 各項目は、配置時にSM_CYICONSPACINGによってSM_CXICONSPACINGサイズの四角形に収まります。 この値は常に SM_CXICON 以上です。
SM_CXMAXIMIZED
61
プライマリ ディスプレイ モニターの最大化されたトップレベル ウィンドウの既定の幅 (ピクセル単位)。
SM_CXMAXTRACK
59
キャプションとサイズ変更の境界線を持つウィンドウの既定の最大幅 (ピクセル単位)。 このメトリックは、デスクトップ全体を指します。 ユーザーは、これらのサイズより大きいサイズにウィンドウ フレームをドラッグすることはできません。 ウィンドウは、 WM_GETMINMAXINFO メッセージを処理することで、この値をオーバーライドできます。
SM_CXMENUCHECK
71
既定のメニューチェックビットマップの幅 (ピクセル単位)。
SM_CXMENUSIZE
54
複数のドキュメント インターフェイスで使用される子ウィンドウの閉じるボタンなどのメニュー バー ボタンの幅 (ピクセル単位)。
SM_CXMIN
28
ウィンドウの最小幅 (ピクセル単位)。
SM_CXMINIMIZED
57
最小化されたウィンドウの幅 (ピクセル単位)。
SM_CXMINSPACING
47
最小化されたウィンドウのグリッド セルの幅 (ピクセル単位)。 最小化された各ウィンドウは、配置時にこのサイズの四角形に収まります。 この値は常に SM_CXMINIMIZED 以上です。
SM_CXMINTRACK
34
ウィンドウの最小追跡幅 (ピクセル単位)。 ユーザーは、これらのサイズよりも小さいサイズにウィンドウ フレームをドラッグすることはできません。 ウィンドウは、 WM_GETMINMAXINFO メッセージを処理することで、この値をオーバーライドできます。
SM_CXPADDEDBORDER
92
キャプション付きウィンドウの罫線のパディングの量 (ピクセル単位)。

Windows XP/2000: この値はサポートされていません。

SM_CXSCREEN
0
プライマリ ディスプレイ モニターの画面の幅 (ピクセル単位)。 これは、GetDeviceCaps を呼び出して取得した値と同じです。 GetDeviceCaps( hdcPrimaryMonitor, HORZRES)
SM_CXSIZE
30
ウィンドウキャプションまたはタイトル バー内のボタンの幅 (ピクセル単位)。
SM_CXSIZEFRAME
32
サイズを変更できるウィンドウの周囲のサイズ変更境界線の太さ (ピクセル単位)。 SM_CXSIZEFRAMEは水平罫線の幅で、SM_CYSIZEFRAMEは垂直境界線の高さです。

この値は、SM_CXFRAMEと同じです。

SM_CXSMICON
49
アイコンのシステムの小さな幅 (ピクセル単位)。 通常、小さいアイコンは、ウィンドウのキャプションと小さなアイコン ビューに表示されます。 詳細については、「 アイコンのサイズ 」を参照してください。
SM_CXSMSIZE
52
小さなキャプションボタンの幅 (ピクセル単位)。
SM_CXVIRTUALSCREEN
78
仮想画面の幅 (ピクセル単位)。 仮想画面は、すべてのディスプレイ モニターの外接する四角形です。 SM_XVIRTUALSCREENメトリックは、仮想画面の左側の座標です。
SM_CXVSCROLL
2
垂直スクロール バーの幅 (ピクセル単位)。
SM_CYBORDER
6
ウィンドウの境界線の高さ (ピクセル単位)。 これは、3-D の外観のウィンドウのSM_CYEDGE値と同じです。
SM_CYCAPTION
4
キャプション領域の高さ (ピクセル単位)。
SM_CYCURSOR
14
カーソルのわずかな高さ (ピクセル単位)。
SM_CYDLGFRAME
8
この値は、SM_CYFIXEDFRAMEと同じです。
SM_CYDOUBLECLK
37
ダブルクリック シーケンスでの最初のクリックの位置を中心とした四角形の高さ (ピクセル単位)。 2 回目のクリックは、SM_CXDOUBLECLKによって定義された四角形内で行われ、2 回のクリックがダブルクリックされたとシステムが考慮するためにSM_CYDOUBLECLKする必要があります。 2 回のクリックも、指定した時間内に行う必要があります。

ダブルクリック四角形の高さを設定するには、 SystemParametersInfo をSPI_SETDOUBLECLKHEIGHTと共に呼び出します。

SM_CYDRAG
69
ドラッグ操作が開始される前にマウス ポインターが移動できる、マウスの上下のピクセル数。 これにより、ユーザーは誤ってドラッグ操作を開始することなく、マウス ボタンを簡単にクリックして離すことができます。 この値が負の場合は、マウスダウン ポイントの上から減算され、その下に加算されます。
SM_CYEDGE
46
3-D 境界線の高さ (ピクセル単位)。 これは、SM_CYBORDERの 3-D に対応する 3-D です。
SM_CYFIXEDFRAME
8
キャプションを持つが、ピクセル単位ではサイズが大きくないウィンドウの周囲のフレームの太さ。 SM_CXFIXEDFRAMEは水平罫線の高さであり、SM_CYFIXEDFRAMEは垂直罫線の幅です。

この値は、SM_CYDLGFRAMEと同じです。

SM_CYFOCUSBORDER
84
DrawFocusRect によって描画されるフォーカス四角形の上端と下端の高さ。 この値はピクセル単位です。

Windows 2000: この値はサポートされていません。

SM_CYFRAME
33
この値は、SM_CYSIZEFRAMEと同じです。
SM_CYFULLSCREEN
17
プライマリ ディスプレイ モニターの全画面表示ウィンドウのクライアント領域の高さ (ピクセル単位)。 システム タスク バーまたはアプリケーション デスクトップ ツール バーによって隠されない画面の部分の座標を取得するには、SPI_GETWORKAREA値を指定して SystemParametersInfo 関数を呼び出します。
SM_CYHSCROLL
3
水平スクロール バーの高さ (ピクセル単位)。
SM_CYICON
12
アイコンのシステムの大きな高さ (ピクセル単位)。 LoadIcon 関数は、SM_CXICONおよび指定SM_CYICONディメンションを持つアイコンのみを読み込むことができます。 詳細については、「 アイコンのサイズ 」を参照してください。
SM_CYICONSPACING
39
大きなアイコン ビューの項目のグリッド セルの高さ (ピクセル単位)。 各項目は、配置時にSM_CYICONSPACINGによってSM_CXICONSPACINGサイズの四角形に収まります。 この値は常に SM_CYICON 以上です。
SM_CYKANJIWINDOW
18
システムの 2 バイト文字セット バージョンの場合、これは画面の下部にある漢字ウィンドウの高さ (ピクセル単位) です。
SM_CYMAXIMIZED
62
プライマリ ディスプレイ モニターの最大化されたトップレベル ウィンドウの既定の高さ (ピクセル単位)。
SM_CYMAXTRACK
60
キャプションとサイズ変更の境界線を持つウィンドウの既定の最大高さ (ピクセル単位)。 このメトリックは、デスクトップ全体を指します。 ユーザーは、これらのサイズより大きいサイズにウィンドウ フレームをドラッグすることはできません。 ウィンドウは、 WM_GETMINMAXINFO メッセージを処理することで、この値をオーバーライドできます。
SM_CYMENU
15
1 行のメニュー バーの高さ (ピクセル単位)。
SM_CYMENUCHECK
72
既定のメニューチェックビットマップの高さ (ピクセル単位)。
SM_CYMENUSIZE
55
複数のドキュメント インターフェイスで使用される子ウィンドウの閉じるボタンなどのメニュー バー ボタンの高さ (ピクセル単位)。
SM_CYMIN
29
ウィンドウの最小高さ (ピクセル単位)。
SM_CYMINIMIZED
58
最小化されたウィンドウの高さ (ピクセル単位)。
SM_CYMINSPACING
48
最小化されたウィンドウのグリッド セルの高さ (ピクセル単位)。 最小化された各ウィンドウは、配置時にこのサイズの四角形に収まります。 この値は常に SM_CYMINIMIZED 以上です。
SM_CYMINTRACK
35
ウィンドウの最小追跡高さ (ピクセル単位)。 ユーザーは、これらのサイズよりも小さいサイズにウィンドウ フレームをドラッグすることはできません。 ウィンドウは、 WM_GETMINMAXINFO メッセージを処理することで、この値をオーバーライドできます。
SM_CYSCREEN
1
プライマリ ディスプレイ モニターの画面の高さ (ピクセル単位)。 これは、GetDeviceCaps を呼び出して取得した値と同じです。 GetDeviceCaps( hdcPrimaryMonitor, VERTRES)
SM_CYSIZE
31
ウィンドウ キャプションまたはタイトル バー内のボタンの高さ (ピクセル単位)。
SM_CYSIZEFRAME
33
サイズを変更できるウィンドウの周囲のサイズ変更境界線の太さ (ピクセル単位)。 SM_CXSIZEFRAMEは水平罫線の幅で、SM_CYSIZEFRAMEは垂直境界線の高さです。

この値は、SM_CYFRAMEと同じです。

SM_CYSMCAPTION
51
小さなキャプションの高さ (ピクセル単位)。
SM_CYSMICON
50
アイコンのシステムの小さな高さ (ピクセル単位)。 通常、小さいアイコンは、ウィンドウのキャプションと小さなアイコン ビューに表示されます。 詳細については、「 アイコンのサイズ 」を参照してください。
SM_CYSMSIZE
53
小さなキャプションボタンの高さ (ピクセル単位)。
SM_CYVIRTUALSCREEN
79
仮想画面の高さ (ピクセル単位)。 仮想画面は、すべてのディスプレイ モニターの外接する四角形です。 SM_YVIRTUALSCREEN メトリックは、仮想画面の上部の座標です。
SM_CYVSCROLL
20
垂直スクロール バー上の矢印ビットマップの高さ (ピクセル単位)。
SM_CYVTHUMB
9
垂直スクロール バーのサム ボックスの高さ (ピクセル単位)。
SM_DBCSENABLED
42
User32.dll が DBCS をサポートする場合は 0 以外。それ以外の場合は 0。
SM_DEBUG
22
User.exe のデバッグ バージョンがインストールされている場合は 0 以外。それ以外の場合は 0。
SM_DIGITIZER
94
現在のオペレーティング システムが Windows 7 または Windows Server 2008 R2 で、タブレット PC 入力サービスが開始されている場合は 0 以外。それ以外の場合は 0。 戻り値は、デバイスでサポートされているデジタイザー入力の種類を指定するビットマスクです。 詳細については、「解説」を参照してください。

Windows Server 2008、Windows Vista、Windows XP/2000: この値はサポートされていません。

SM_IMMENABLED
82
入力メソッド マネージャー/入力メソッドエディター機能が有効な場合は 0 以外、それ以外の場合は 0。

SM_IMMENABLEDは、システムが Unicode アプリケーションで Unicode ベースの IME を使用する準備ができているかどうかを示します。 言語に依存する IME が動作することを確認するには、システム ANSI コード ページをチェック SM_DBCSENABLEDします。 そうしないと、ANSI から Unicode への変換が正しく実行されないか、フォントやレジストリ設定などの一部のコンポーネントが存在しない可能性があります。

SM_MAXIMUMTOUCHES
95
システムにデジタイザーがある場合は 0 以外。それ以外の場合は 0。

SM_MAXIMUMTOUCHESは、システム内のすべてのデジタイザーでサポートされている連絡先の最大数の合計を返します。 システムにシングルタッチ デジタイザーしかない場合、戻り値は 1 です。 システムにマルチタッチ デジタイザーがある場合、戻り値はハードウェアが提供できる同時接触の数です。

Windows Server 2008、Windows Vista、Windows XP/2000: この値はサポートされていません。

SM_MEDIACENTER
87
現在のオペレーティング システムが Windows XP、Media Center Edition の場合は 0 以外。そうでない場合は 0。
SM_MENUDROPALIGNMENT
40
ドロップダウン メニューが対応するメニュー バー項目と右揃えの場合は 0 以外。メニューが左揃えの場合は 0。
SM_MIDEASTENABLED
74
システムがヘブライ語とアラビア語に対して有効になっている場合は 0 以外、有効でない場合は 0。
SM_MOUSEPRESENT
19
マウスがインストールされている場合は 0 以外。それ以外の場合は 0。 この値は、仮想マウスのサポートと、一部のシステムがマウスの存在ではなくポートの存在を検出するため、ほとんど 0 になることはほとんどありません。
SM_MOUSEHORIZONTALWHEELPRESENT
91
水平スクロール ホイールを持つマウスがインストールされている場合は 0 以外。それ以外の場合は 0。
SM_MOUSEWHEELPRESENT
75
垂直スクロール ホイールを持つマウスがインストールされている場合は 0 以外。それ以外の場合は 0。
SM_NETWORK
63
ネットワークが存在する場合は、最下位ビットが設定されます。それ以外の場合は、クリアされます。 その他のビットは、将来使用するために予約されています。
SM_PENWINDOWS
41
Microsoft Windows for Pen コンピューティング拡張機能がインストールされている場合は 0 以外。それ以外の場合は 0。
SM_REMOTECONTROL
0x2001
このシステム メトリックは、現在のターミナル サーバー セッションがリモートで制御されているかどうかを判断するために、ターミナル サービス環境で使用されます。 現在のセッションがリモートで制御されている場合、その値は 0 以外です。それ以外の場合は 0。

ターミナル サービス マネージャー (tsadmin.msc) や shadow.exe などのターミナル サービス管理ツールを使用して、リモート セッションを制御できます。 セッションがリモートで制御されている場合、別のユーザーはそのセッションの内容を表示し、そのセッションと対話できる可能性があります。

SM_REMOTESESSION
0x1000
このシステム メトリックは、ターミナル サービス環境で使用されます。 呼び出しプロセスがターミナル サービス クライアント セッションに関連付けられている場合、戻り値は 0 以外です。 呼び出しプロセスがターミナル サービス コンソール セッションに関連付けられている場合、戻り値は 0 です。 Windows Server 2003 および Windows XP: コンソール セッションは、必ずしも物理コンソールであるとは限りません。 詳細については、「 WTSGetActiveConsoleSessionId」を参照してください。
SM_SAMEDISPLAYFORMAT
81
すべてのディスプレイ モニターの色形式が同じ場合は 0 以外、それ以外の場合は 0。 2 つのディスプレイのビット深度は同じですが、色の形式は異なります。 たとえば、赤、緑、青のピクセルは、異なるビット数でエンコードできます。または、それらのビットはピクセルの色の値の異なる場所に配置できます。
SM_SECURE
44
このシステム メトリックは無視する必要があります。常に 0 を返します。
SM_SERVERR2
89
システムが Windows Server 2003 R2 の場合のビルド番号。それ以外の場合は 0。
SM_SHOWSOUNDS
70
ユーザーがアプリケーションで情報を視覚的に提示する必要がある場合、それ以外の場合は可聴形式でのみ情報を提示する必要がある場合は 0 以外。それ以外の場合は 0。
SM_SHUTTINGDOWN
0x2000
現在のセッションがシャットダウンしている場合は 0 以外。それ以外の場合は 0。

Windows 2000: この値はサポートされていません。

SM_SLOWMACHINE
73
コンピューターにローエンド (低速) プロセッサがある場合は 0 以外。それ以外の場合は 0。
SM_STARTER
88
現在のオペレーティング システムが Windows 7 Starter Edition、Windows Vista Starter、または Windows XP Starter Edition の場合は 0 以外。それ以外の場合は 0。
SM_SWAPBUTTON
23
マウスの左右のボタンの意味が入れ替わる場合は 0 以外。それ以外の場合は 0。
SM_SYSTEMDOCKED
0x2004
ドッキング モードの状態を反映し、ドッキング解除モードの場合は 0、それ以外の場合は 0 以外の状態を反映します。 このシステム メトリックが変更されると、システムは LPARAM に "SystemDockMode" を 含むWM_SETTINGCHANGE 経由でブロードキャスト メッセージを送信します。
SM_TABLETPC
86
現在のオペレーティング システムが Windows XP タブレット PC エディションの場合、または現在のオペレーティング システムが Windows Vista または Windows 7 でタブレット PC 入力サービスが開始されている場合は 0 以外。それ以外の場合は 0。 SM_DIGITIZER設定は、Windows 7 または Windows Server 2008 R2 を実行しているデバイスでサポートされるデジタイザー入力の種類を示します。 詳細については、「解説」を参照してください。
SM_XVIRTUALSCREEN
76
仮想画面の左側の座標。 仮想画面は、すべてのディスプレイ モニターの外接する四角形です。 SM_CXVIRTUALSCREEN メトリックは、仮想画面の幅です。
SM_YVIRTUALSCREEN
77
仮想画面の上部の座標。 仮想画面は、すべてのディスプレイ モニターの外接する四角形です。 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で導入)

こちらもご覧ください

EnumDisplayMonitors

GetSystemMetricsForDPI

SystemParametersInfo