プロが教える店舗&オフィスのセキュリティ対策術

解像度ではなく
モニタのサイズをVBAで取得することは可能ですか?

Declare Function GetSystemMetrics _
Lib "user32" _
(ByVal nIndex As Long) As Long
Const SM_CXSCREEN As Long = 0
Const SM_CYSCREEN As Long = 1

Function myX()
'画面の幅を取得
myX = GetSystemMetrics(SM_CXSCREEN)
End Function
Function myY()
myY = GetSystemMetrics(SM_CYSCREEN)
End Function


で解像度は取得できますが、
モニタのサイズによって動きを変えたいため、サイズを取得したいです。
デスクトップPCにモニタを付けて使っています。

A 回答 (1件)

物理的なモニタサイズの取得は不可だと思います。


思いつく方法としては

・DPIと解像度から大よそのサイズを割り出す
 一昔前なら96DPIがほぼ標準だったので特定可能でしたが高ppiのモニタが増えた昨今、現実的ではありません

・ドライバレベルでモニタサイズを推定する
 モニタ用のドライバが入っているようなレアケースだけに限定されます。現実的ではありません
 ビデオカードのドライバですら、モニタの物理的サイズは検出できていないですし

・製品名から特定する
 特に設定せずPCに繋げているなら、汎用PnPとして表示されているため
 ビデオカードのドライバを通してモニタの製品名(型番)を取得し特定・・現実的ではありません

以上です。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2015/01/03 09:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています