- 日時: 2010/03/11 07:13
- 名前: 花ちゃん
- ***********************************************************************************
* カテゴリー:[システム関係][周辺機器][] * * キーワード:解像度,画面のプロパティ,コントロールパネル,モニタ,, * *********************************************************************************** タイトル : 選択可能な画面解像度の取得 記 事 No : 9876 投 稿 日 : 2010/02/16(Tue) 16:16 元質問者 : miri
.NETでの選択可能な画面解像度の取得ですが、調べましたが分かりませんでした。 (現在の画面解像度の取得はありましたが) WinAPIを使うしかありませんでしょうか?
----------------------------------------------------------------------------------- 記事No : 9882 投稿日 : 2010/02/17(Wed) 01:38 回答者 : 魔界の仮面弁士 ----------------------------------------------------------------------------------- > .NETでの選択可能な画面解像度の取得ですが > 調べましたが分かりませんでした。 VB の掲示板なので、あえて VB で回答するとこんな感じ。
Imports Microsoft.DirectX.Direct3D Public Class Form1 Private Sub Button1_Click(ByVal sender As Object, _ ByVal e As EventArgs) Handles Button1.Click
ListBox1.BeginUpdate() For Each adp As AdapterInformation In Manager.Adapters With adp.Information ListBox1.Items.Add(String.Format("=== {0}, {1} ({2}) ===", _ .DeviceId, .DeviceName, .Description)) End With For Each mode As DisplayMode In adp.SupportedDisplayModes ListBox1.Items.Add(String.Format("{0,5:#,0} x {1,5:#,0} : {2}Hz : {3}", _ mode.Width, mode.Height, mode.RefreshRate, mode.Format)) Next Next ListBox1.EndUpdate()
End Sub End Class
以下、省略 詳しくは、記事No : 9882 等一連のスレッドをご覧下さい。- By 花ちゃん
※ Direct3D.dll がインストールされていない環境では、別途、インストールする必要があります。 又、実行時に例外が発生する場合があります、その場合、「デバッグ」→「例外」でLoaderLockの チェックを一旦外して実行すれば動作します。 その後元に戻してもエラーは出なくなる場合もあります。 詳しくは、LoaderLock をキーに検索して調べて見て下さい。
尚、一部PCでは、実解像度以上の設定値の解像度を取得できない場合があります。 (14.1 型 1024×768 で 1920×1440 等が取得できない。画面のプロパティでは、設定できる) 上記は、Win32 API を使って取得しても同じです。
上記プログラムの実行結果(全てを取得できない環境での) 640 x 480 : 60Hz : X8R8G8B8 800 x 600 : 60Hz : X8R8G8B8 1,024 x 768 : 60Hz : X8R8G8B8 640 x 480 : 60Hz : R5G6B5 800 x 600 : 60Hz : R5G6B5 1,024 x 768 : 60Hz : R5G6B5
|