38034


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


CC BY-SA 3.0
2017-09-19T05:50:35.853
38033
2017-09-19T12:50:28.460
2017-09-19T12:50:28.460
19110
10165
question
c# windows
マルチディスプレイの識別番号をC#から取得できますか？


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

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

[code]

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

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

[code]

    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);
            }
        }
    }
    
[/code]


CC BY-SA 3.0
2017-09-19T07:12:51.473
38034
2017-09-19T07:12:51.473
5750
38033
answer