ここではVB.NETのScreenクラスを使って、ディスプレイの解像度を取得する方法について紹介します。
目次
Screenクラスとは
System.Windows.Forms.Screen クラスは、Windows のディスプレイ(モニター)情報を取得するための .NET 標準クラスです。解像度・作業領域・デバイス名・プライマリかどうかなどを取得できます。
主なScreenのプロパティ
・AllScreens — 接続されているすべてのディスプレイの配列を取得する
・PrimaryScreen — プライマリ(メイン)ディスプレイを取得する
・Bounds(Rectangle) — モニターの左上座標・幅・高さ(解像度)を取得する
・WorkingArea(Rectangle) — タスクバーなどを除いた実際の作業領域を取得する
・DeviceName(String) — ディスプレイのデバイス名を取得する
・Primary(Boolean) — その Screen がプライマリモニターかどうか判定する
プライマリディスプレイの解像度を取得する
以下は PrimaryScreen プロパティを使って、プライマリ(メイン)ディスプレイの解像度を取得するコードです。
Dim screenWidth As Integer = Screen.PrimaryScreen.Bounds.Width
Dim screenHeight As Integer = Screen.PrimaryScreen.Bounds.Height
Debug.Print("画面の解像度: " & screenWidth & " x " & screenHeight)
実行結果
画面の解像度: 1920 x 1080
すべてのディスプレイの解像度を取得する
以下は AllScreens プロパティと DeviceName プロパティを使って、すべてのディスプレイのデバイス名と解像度を取得するコードです。
For Each scr As Screen In Screen.AllScreens
Console.WriteLine("スクリーン: " & scr.DeviceName)
Console.WriteLine("解像度: " & scr.Bounds.Width & " x " & scr.Bounds.Height)
Next
実行結果
スクリーン: \\.\DISPLAY1
解像度: 1920 x 1080
スクリーン: \\.\DISPLAY2
解像度: 2560 x 1440
タスクバーを除いた作業領域を取得する
以下は WorkingArea プロパティを使って、プライマリ(メイン)ディスプレイのタスクバーを除いた作業領域を取得するコードです。
Dim workArea As Rectangle = Screen.PrimaryScreen.WorkingArea
Debug.Print("作業領域:")
Debug.Print("X: " & workArea.X)
Debug.Print("Y: " & workArea.Y)
Debug.Print("Width: " & workArea.Width)
Debug.Print("Height: " & workArea.Height)
実行結果
作業領域:
X: 0
Y: 0
Width: 1920
Height: 1020
プライマリディスプレイか判定する
以下は Primary プロパティを使って、プライマリ(メイン)ディスプレイか判定するコードです。
For Each scr As Screen In Screen.AllScreens
Debug.Print("デバイス名: " & scr.DeviceName)
If scr.Primary Then
Debug.Print("→ このモニターはプライマリです")
Else
Debug.Print("→ このモニターはセカンダリです")
End If
Next
実行結果
デバイス名: \\.\DISPLAY1
→ このモニターはプライマリです
デバイス名: \\.\DISPLAY2
→ このモニターはセカンダリです
以上、VB.NETのScreenクラスを使って、ディスプレイの解像度を取得する方法について解説しました。