显示器物理尺寸的获取,EDID数据获取

本文档介绍了一种获取显示器物理尺寸的方法,涉及Windows API,包括EnumDisplayDevices、DISPLAY_DEVICE、注册表操作等,通过解析DeviceID获取Model和Driver,并从注册表中读取EDID数据来确定显示器的物理尺寸。
摘要由CSDN通过智能技术生成
网上查阅资料整理如下:
原理:由EnumDisplayDevices获取当前显示器的DISPLAY_DEVICE数据,取其中的DeviceID进行解析,获取Model和Driver,然后在注册表SYSTEM\\CurrentControlSet\\Enum\\DISPLAY\\中匹配到键值,取得其中的EDID数据。
头文件如下:
/********************************************************************
	created:	2016/01/21
	created:	21:1:2016   15:27
	file base:	XDisplayDevice
	file ext:	h
	author:		zhangweifang
	
	purpose:	显示设备相关API
*********************************************************************/
#ifndef _X_DISPLAY_DEVICE_H_
#define _X_DISPLAY_DEVICE_H_
//
#include <Windows.h>
#include <string>
using namespace std;
//
// 获取当前正在使用的Monitor
BOOL
XDD_GetActiveAttachedMonitor(
	OUT DISPLAY_DEVICE &ddMonitor                // 输出ddMonitor信息
	);

// 解析DeviceID得到LEN0028以及{4d36e96e-e325-11ce-bfc1-08002be10318}\0001
// DeviceID:MONITOR\LEN0028\{4d36e96e-e325-11ce-bfc1-08002be10318}\0001
BOOL
XDD_GetModelDriverFromDeviceID(
	IN  LPCWSTR lpDeviceID,                      // DeviceID
	OUT wstring &strModel,                       // 输出型号,比如LEN0028
	OUT wstring &strDriver                       // 输出驱动信息,比如{4d36e96e-e325-11ce-bfc1-08002be10318}\0001
	);

// 根据Model判断EDID数据是否正确
BOOL
XDD_IsCorrectEDID(
	IN  const BYTE *pEDIDBuf,                    // EDID数据缓冲区
	IN  DWORD dwcbBufSize,                       // 数据字节大小
	IN  LPCWSTR lpModel                          // 型号
	);

// 根据Model及Driver信息取得EDID数据
BOOL
XDD_GetDeviceEDID(
	IN  LPCWSTR lpModel,                         // 型号
	IN  LPCWSTR lpDriver,                        // Driver
	OUT BYTE *pDataBuf,                          // 输出EDID数据缓冲区
	IN DWORD dwcbBufSize,                        // 输出缓冲区字节大小,不可小于256
	OUT DWORD *pdwGetBytes = NULL                // 实际获得字节数
	);

// 获取当前Monitor的物理尺寸,单位CM
BOOL
XDD_GetActiveMonitorPhysicalSize(
	OUT DWORD &dwWidth,                          // 输出宽度,单位CM
	OUT DWORD &dwHeight                          // 输出高度&#
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值