2012-05-19 3 views
5

Я пытаюсь идентифицировать экран в настройках нескольких мониторов, чтобы сохранить некоторые данные, связанные с этим экраном. Как я могу надежно идентифицировать экран, также после перезагрузки?Идентификационные дисплеи

Я знаю, что класс Screen в .Net, но Screen.DeviceName, кажется, не указывает последовательно на один экран (например, после установки нового графического драйвера).

+0

Вы действительно ожидали, что сможете изменить драйверы устройств и по-прежнему отслеживать определенный экран? Реальный вопрос: зачем вам это делать? –

+0

Хорошо, потому что я пишу небольшой инструмент для нескольких мониторов и вам нужно сохранять настройки для каждого экрана. –

ответ

0

Я решил эту проблему, получая DeviceID с API EnumDisplayDevices. Кажется уникальным для каждого экрана и не изменяется после обновления драйвера, например.

WMI не может быть изменен для меня, поскольку я попробовал его раньше, и он возвращает только один монитор с моей настройкой нескольких мониторов.

0

Попробуйте WMI вместо WinForms.

Следующая запись показывает, как получить мониторы и их детали (s DisplayDetails класс например.): Monitor ID and Serial Number

Edit:

Мое предложение:

using System.Management; 

ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_DesktopMonitor");  
foreach (ManagementObject obj in searcher.Get()) 
    Console.WriteLine("PNP Device ID: {0}", obj ["PNPDeviceID"]); 
+0

У меня есть два монитора, и этот запрос возвращает только один –

Смежные вопросы