对于我当前的C++项目,我需要为在大量计算机上连接并处于活动状态的每个监视器检测唯一字符串.
研究指出了两种选择
使用WMI并查询Win32_DesktopMonitor以查找所有活动的监视器.使用PNPDeviceID进行监视器的唯一标识.
使用EnumDisplayDevices API,深入挖掘以获取设备ID.
我对使用设备ID进行唯一模型识别感兴趣,因为使用默认即插即用驱动程序的监视器将报告通用字符串作为监视器名称"默认即插即用监视器"
我一直遇到WMI方法的问题,它似乎只在我的Vista机器上返回1个显示器,看着它看起来它在非WDDM设备上无法正常工作.
当EnumDisplayDevices从后台服务运行时(尤其是在Vista上运行),它似乎有点问题,如果它在会话0中它将不返回任何信息.
有没有其他人必须做类似的事情(为所有连接的活动监视器找到唯一的模型字符串?)
什么方法效果最好?
在Windows中,我们有关于Monitros的信息 - 一些独特的名称和ID.例如
我有问题如何在C#中获取信息,因为我知道我们可以从WMI获得的序列号:root\WMI - > WmiMonitorID
和关于显示:root/CIMV2 Win32_DesktopMonitor
但是我必须把这个信息放在一起,它可以说是Aceer S/N xxx在Windows中有id 1
有人有点想法吗?