即効テクニック

Windows環境・オブジェクト

画面解像度を取得する

(Access 2000/2002/2003)
●概要●
宣言文  Declare Function GetSystemMetrics Lib "user32"
        (ByVal nIndex As Long) As Long

設定項目        内容
nIndex          取得する値の種類を示す定数を指定[省略不可]

GetSystemMetrics関数は、引数に指定した定数によって、様々なウィンドウアイテムのサイズや数などを返します。画面解像度を取得する場合には、定数「SM_CXSCREEN(=0)」を指定して画面の幅を、定数「SM_CYSCREEN(=1)」を指定して画面の高さを取得します。
次のコードは、画面解像度をメッセージダイアログで表示するサンプルです。

●サンプル1●
Private Declare Function GetSystemMetrics _
    Lib "user32" _
    (ByVal nIndex As Long) As Long
Private Const SM_CXSCREEN As Long = 0
Private Const SM_CYSCREEN As Long = 1

'画面解像度を取得する
Sub Sample1()
    Dim myX As Long, myY As Long
    '画面の幅を取得
    myX = GetSystemMetrics(SM_CXSCREEN)
    '画面の高さを取得
    myY = GetSystemMetrics(SM_CYSCREEN)
    '結果の表示
    MsgBox myX & " × " & myY
End Sub

また、デスクトップのサイズを取得することによっても、同様の結果が得られます。
次のコードは「Sample1」プロシージャとまったく同じ結果を返すサンプルです。

●サンプル2●
Private Type RECT
        Left As Long
        Top As Long
        Right As Long
        Bottom As Long
End Type
Private Declare Function GetDesktopWindow _
    Lib "user32" () As Long
Private Declare Function GetWindowRect _
    Lib "user32" _
    (ByVal hwnd As Long _
    , lpRect As RECT) As Long

'画面解像度を取得する
Sub Sample2()
    Dim myHwnd As Long
    Dim myRect As RECT
    'デスクトップのウィンドウハンドルの取得
    myHwnd = GetDesktopWindow()
    '位置、サイズ情報の取得
    GetWindowRect myHwnd, myRect
    '幅と高さを表示
    With myRect
        MsgBox .Right & " × " & .Bottom
    End With
End Sub