Como obtenho o nome real do monitor? como visto na caixa de diálogo de resolução

Estou tentando pegar o nome amigável dos monitores no meu sistema. Eu estou usando c #.

eu tenteiScreen, o que me dá//./DisplayXX. Eu também tentei ambosWin32_DesktopMonitor eEnumDisplayDevices, todos eles me dão variações de//./DisplayXX OUGeneric Monitor, enquanto eu sei que os nomes dos meus monitores sãoSyncMaster eSM2333T.

Agora o Windows sabe o que são esses monitores, os exibe noDispositivos e Impressoras janelas com os nomes corretos e também na caixa de diálogo para definir o local e a resolução.

De onde posso pegar esses nomes? Eu olhei no registro e não consigo encontrá-los, então qualquer ajuda será ótima.

SOLUÇÃO: O problema que tive foi ao ligar paraEnumDisplayDevices a segunda vez que eu estava montandoiDevNum para identificar novamente, o que significava que eu estava tentando pegar dados do lugar errado, substituí-o por 0 e funciona perfeitamente, veja o código abaixo.

    var device = new DISPLAY_DEVICE();
    device.cb = Marshal.SizeOf(device);
    try
    {
        for (uint id = 0; EnumDisplayDevices(null, id, ref device, 0); id++)
        { 
                Console.WriteLine(String.Format("{0}, {1}, {2}, {3}, {4}, {5}", id, device.DeviceName, device.DeviceString, device.StateFlags, device.DeviceID, device.DeviceKey));
                Console.WriteLine();
                device.cb = Marshal.SizeOf(device);

                EnumDisplayDevices(device.DeviceName, 0, ref device, 0);

                Console.WriteLine(String.Format("{0}, {1}, {2}, {3}, {4}, {5}", id, device.DeviceName, device.DeviceString, device.StateFlags, device.DeviceID, device.DeviceKey));
                device.cb = Marshal.SizeOf(device);

                device.cb = Marshal.SizeOf(device);
                return;
            }

        }
    }
    catch (Exception ex)
    {
        Console.WriteLine(String.Format("{0}", ex.ToString()));
    }

questionAnswers(5)

yourAnswerToTheQuestion