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». Нажмите на единственную кнопку на вашего приложения. Если вы все сделали правильно, то у вас появится диалоговое окно с моделью и серийным номером вашего монитора, в случае если мониторов несколько, то сообщений будет столько же.
Ссылка для скачивания примера: Яндекс.Диск
Дополнительные материалы: Яндекс.Диск










Комментариев нет:
Отправить комментарий
Большая просьба, не писать в комментариях всякую ерунду не по теме!