Extended Display Identification Data (EDID) — стандарт формата данных VESA, который содержит базовую информацию о мониторе и его возможностях, включая информацию о производителе, максимальном размере изображения, цветовых характеристиках, заводских предустановленных таймингах, границах частотного диапазона, а также строках, содержащих название монитора и серийный номер. Информация сохраняется в мониторе и используется для обмена данными с системой через канал экранных данных (англ. DDC, Display Data Channel), который находится между монитором и графическим адаптером. Система использует эту информацию в конфигурационных целях, в итоге монитор и система могут работать вместе синхронизировано. Последняя версия EDID (версия 1.3) может быть использована в ЭЛТ-мониторах, ЖК-мониторах, а также будущих типах мониторов, так как EDID предлагает общее описание почти всех параметров монитора.
Для просмотра информации о вашем мониторе, запустите редактор реестра. Откройте меню Пуск -> Все программы -> Стандартные -> Выполнить (или нажмите сочетание клавиш Win+R), введите команду regedit и нажмите кнопку «ОК». Перейдите по пути HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\DISPLAY\ ID монитора \Device Parameters\, в этом подкаталоге находится единственный параметр EDID, с типом данных REG_BINARY. В нем хранятся необработанные двоичные данные.
Эти данные можно просмотреть в редакторе реестра в шестнадцатеричном формате. Если вы откроете данный параметр, сделав двойной клик левой клавишей мыши по нему, то увидите с левой стороны двоичные данные, а с правой их расшифровку. Ниже представлен пример таких данных, здесь вы можете сразу увидеть серийный номер, а затем модель вашего монитора.
На самом деле в данном параметре содержится гораздо больше информации, чем отображает редактор реестра.
Для просмотра полной информации о подключенных к вашему компьютеру мониторов вы можете воспользоваться программой Monitor Asset Manager (ссылка на оф. сайт http://www.entechtaiwan.com/util/moninfo.shtm).
Запустите приложение, нажав на клавиатуре клавишу «F5». Нажмите на единственную кнопку на вашего приложения. Если вы все сделали правильно, то у вас появится диалоговое окно с моделью и серийным номером вашего монитора, в случае если мониторов несколько, то сообщений будет столько же.
Для просмотра информации о вашем мониторе, запустите редактор реестра. Откройте меню Пуск -> Все программы -> Стандартные -> Выполнить (или нажмите сочетание клавиш Win+R), введите команду regedit и нажмите кнопку «ОК». Перейдите по пути HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\DISPLAY\ ID монитора \Device Parameters\, в этом подкаталоге находится единственный параметр EDID, с типом данных REG_BINARY. В нем хранятся необработанные двоичные данные.
Эти данные можно просмотреть в редакторе реестра в шестнадцатеричном формате. Если вы откроете данный параметр, сделав двойной клик левой клавишей мыши по нему, то увидите с левой стороны двоичные данные, а с правой их расшифровку. Ниже представлен пример таких данных, здесь вы можете сразу увидеть серийный номер, а затем модель вашего монитора.
На самом деле в данном параметре содержится гораздо больше информации, чем отображает редактор реестра.
Для просмотра полной информации о подключенных к вашему компьютеру мониторов вы можете воспользоваться программой Monitor Asset Manager (ссылка на оф. сайт http://www.entechtaiwan.com/util/moninfo.shtm).
Дополнительную информацию о формате данных EDID вы можете посмотреть по ссылке http://en.wikipedia.org/wiki/EDID.
В данной инструкции будет описан способ получения из реестра серийного номера и модели активного (подключенного в данный момент) монитора. Создайте проект Windows Form в Microsoft Visual Studio. Нажмите клавишу «F7» и перейдите в листинг главной формы. Добавьте приведенный ниже метод:private void MonitorInfo() { Microsoft.Win32.RegistryKey Display = Microsoft.Win32.Registry.LocalMachine; Boolean bFailed = false; try { Display = Registry.LocalMachine.OpenSubKey(@"SYSTEM\CurrentControlSet\Enum\DISPLAY"); } catch { bFailed = true; } if (!bFailed & (Display != null)) { foreach (string sMonitorID in Display.GetSubKeyNames()) { RegistryKey MonitorID = Display.OpenSubKey(sMonitorID); if (MonitorID != null) { foreach (string sPNPID in MonitorID.GetSubKeyNames()) { RegistryKey PnPID = MonitorID.OpenSubKey(sPNPID); if (PnPID != null) { string[] sSubkeys = PnPID.GetSubKeyNames(); if (sSubkeys.Contains("Control")) { if (sSubkeys.Contains("Device Parameters")) { RegistryKey DevParam = PnPID.OpenSubKey("Device Parameters"); string sSerial = ""; string sModel = ""; string sSerFind = new string(new char[] { (char)00, (char)00, (char)00, (char)0xff }); string sModFind = new string(new char[] { (char)00, (char)00, (char)00, (char)0xfc }); byte[] bObj = DevParam.GetValue("EDID", null) as byte[]; if (bObj != null) { string[] sDescriptor = new string[4]; Encoding ANSI = Encoding.GetEncoding(1252); sDescriptor[0] = ANSI.GetString(bObj, 0x36, 18); sDescriptor[1] = ANSI.GetString(bObj, 0x48, 18); sDescriptor[2] = ANSI.GetString(bObj, 0x5A, 18); sDescriptor[3] = ANSI.GetString(bObj, 0x6C, 18); //Search the Keys foreach (string sDesc in sDescriptor) { if (sDesc.Contains(sSerFind)) { sSerial = sDesc.Substring(4).Replace("\0","").Trim(); } if (sDesc.Contains(sModFind)) { sModel = sDesc.Substring(4).Replace("\0","").Trim(); } } } if (!string.IsNullOrEmpty(sPNPID + sSerFind + sModel + sMonitorID)) { MessageBox.Show( "Модель: " + sModel + Environment.NewLine + "Серийный номер: " + sSerial); } } } } } } } } }Для вызова этого метода добавьте на форму компонент «Button» и сделайте двойной клик по нему, вы перейдите в автоматический метод button1_Click. Добавьте в него вызов метода «MonitorInfo();».
Запустите приложение, нажав на клавиатуре клавишу «F5». Нажмите на единственную кнопку на вашего приложения. Если вы все сделали правильно, то у вас появится диалоговое окно с моделью и серийным номером вашего монитора, в случае если мониторов несколько, то сообщений будет столько же.
Ссылка для скачивания примера: Яндекс.Диск
Дополнительные материалы: Яндекс.Диск
Комментариев нет:
Отправить комментарий
Большая просьба, не писать в комментариях всякую ерунду не по теме!