21xrx.com
2024-12-22 22:18:41 Sunday
登录
文章检索 我的文章 写文章
如何用C++获取屏幕的EDID信息
2023-06-28 00:28:01 深夜i     --     --
C++ 屏幕 EDID 获取 信息

C++是一种流行的编程语言,被广泛用于软件开发和编写系统级应用程序。屏幕的EDID信息是指扁平显示器的标识信息,包括制造商的名称、型号、分辨率、显示器的大小和支持的颜色,等等。在本文中,我们将介绍如何使用C++获取屏幕的EDID信息。

获取EDID信息的第一步是在Windows系统中获取屏幕的设备句柄。当我们打开设备管理器时,可以看到一个屏幕显示器节点,其包含了我们的屏幕设备的所有信息(如设备“类”、制造商、型号等)。

使用C++编写代码读取registry键的内容,以获取屏幕的设备句柄。

HKEY hKey;

DWORD dwType;

DWORD dwSize;

BYTE EDIDBuffer[256];

LSTATUS status;

status = RegOpenKeyEx(HKEY_LOCAL_MACHINE,

  "SYSTEM\\CurrentControlSet\\Enum\\DISPLAY\\Dell U2412M",

  0,

  KEY_READ,

  &hKey);

if (status == ERROR_SUCCESS)

{

  dwType = REG_BINARY;

  dwSize = sizeof(EDIDBuffer);

  status = RegQueryValueEx(hKey,

    "Device Parameters",

    0,

    &dwType,

    EDIDBuffer,

    &dwSize);

  if (status != ERROR_SUCCESS)

  {

    printf("Error reading EDID data.\n");

    return -1;

  }

}

else

{

  printf("Error opening registry key.\n");

  return -1;

}

通过阅读EDID信息中的标记字段,我们可以获取所需的数据。在EDID结构中最重要的字段是“标识符”字段(即“EDID”),因为它告诉我们这是一个真正的EDID块。

接下来,我们需要解析EDID数据,以查找其中的设备信息。这需要一些复杂的代码逻辑,但是如果您已经熟悉EDID格式,这应该不是问题。

在完成代码解析后,您可以读取几乎您需要的每个数据类型,包括分辨率、显示器型号和制造商名称。

总之,使用C++编写代码读取屏幕的EDID信息与系统开发者和系统管理员相关,但这是一项值得深入了解的高级任务。通过阅读本文,希望您能更好地了解EDID信息,以及如何使用C++获取它。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复