1,184
社区成员
发帖
与我相关
我的任务
分享
const ROOT_NODE = '\SYSTEM\CurrentControlSet\Enum\DISPLAY\';
{读取注册表显示设备EDID信息}
Reg.RootKey := HKEY_LOCAL_MACHINE;
Registry.OpenKeyReadOnly(ROOT_NODE);
{如果有多台显示器 \DISPLAY 至少包括2个以上子节点 其中第一个\Default_Monitor 可以忽略}
{读取VESA_MONITOR_ID列表}
Reg.GetKeyNames(MONITOR_IDS);
{每一个VMID下面还会有个PNP_ID节点}
Registry.OpenKeyReadOnly(MONITOR_IDS[i]);
{读取PNP_ID节点}
Reg.GetKeyNames(PNP_ID);
{到这可以读取显示器的EDID信息了}
Registry.OpenKeyReadOnly(PNP_ID[0] + '\Device Parameters');
{
Buf: array[0..$FF] of Byte;
HorW, VerH: WORD;
}
Reg.ReadBinaryData('EDID', Buf[0], sizeof(Buf));
HorW := ((Buf[$44] and $f0) shl 4) xor Buf[$42];
VerH := ((Buf[$44] and $0f) shl 8) xor Buf[$43];