マルチディスプレイの識別番号をC#から取得できますか?

投稿者: Anonymous

Windows 7の環境で複数のディスプレイを接続した時、識別番号が割り振られます。
この識別番号を、C#から取得する方法は有るのでしょうか?

解決

ディスプレイ番号は単純に接続されているデバイスの順序ですので、System.Windows.Forms.Screen.AllScreensやWMIのWin32_PnPEntityで返されるモニターのリストに1から順に番号を振ればいいものと思います。

System.Windows.Formsを使用する場合

foreach (var s in System.Windows.Forms.Screen.AllScreens)
{
    Console.WriteLine("{0} {1}", s.DeviceName, s.Bounds);
}

System.Management (WMI)を使用する場合

using (var mos = new ManagementObjectSearcher("root\cimv2", "SELECT * FROM Win32_PnPEntity WHERE Service="monitor""))
{
    foreach (var m in mos.Get())
    {
        Console.WriteLine(m);
        foreach (var p in m.Properties)
        {
            Console.WriteLine("    - {0}: {1}", p.Name, p.Value);
        }
    }
}
回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *