特定の画面ですべての有効な解像度を取得する方法はありますか?
現在、すべての有効な画面が取り込まれたドロップダウンがあります ( Screen.AllScreensを使用)。ユーザーが画面を選択すると、現在の解像度だけでなく、そのディスプレイのすべての有効な解像度をリストする 2 番目のドロップダウンを表示したいと思います。
特定の画面ですべての有効な解像度を取得する方法はありますか?
現在、すべての有効な画面が取り込まれたドロップダウンがあります ( Screen.AllScreensを使用)。ユーザーが画面を選択すると、現在の解像度だけでなく、そのディスプレイのすべての有効な解像度をリストする 2 番目のドロップダウンを表示したいと思います。
Windows Management Instrumentation(WMI)を使用して情報を取得できるはずだと思います。WMIには、System.Management名前空間のクラスを使用して.NETからアクセスできます。
解決策は次のようになります。WMIがよくわからないため、探している情報をすぐに見つけることができませんでしたが、ビデオカードでサポートされている解像度のWMIクラスを見つけました。このコードでは、System.Management.dllを参照し、System.Management名前空間をインポートする必要があります。
var scope = new ManagementScope();
var query = new ObjectQuery("SELECT * FROM CIM_VideoControllerResolution");
using (var searcher = new ManagementObjectSearcher(scope, query))
{
var results = searcher.Get();
foreach (var result in results)
{
Console.WriteLine(
"caption={0}, description={1} resolution={2}x{3} " +
"colors={4} refresh rate={5}|{6}|{7} scan mode={8}",
result["Caption"], result["Description"],
result["HorizontalResolution"],
result["VerticalResolution"],
result["NumberOfColors"],
result["MinRefreshRate"],
result["RefreshRate"],
result["MaxRefreshRate"],
result["ScanMode"]);
}
}
次のリンクには、このための詳細なコード例が含まれています。
タスク 2: ディスプレイの解像度を変更する
http://msdn.microsoft.com/en-us/library/aa719104(VS.71).aspx#docum_topic2