对于我当前的 C++ 项目,我需要为在大量计算机上连接并处于活动状态的每个监视器检测一个唯一的字符串。
研究指出了两种选择
使用 WMI 并在 Win32_DesktopMonitor 中查询所有活动监视器。使用 PNPDeviceID 唯一标识监视器。
使用 EnumDisplayDevices API,并向下挖掘以获取设备 ID。
我有兴趣使用设备 ID 来识别唯一的型号,因为使用默认即插即用驱动程序的监视器将报告一个通用字符串作为监视器名称“默认即插即用监视器”
我一直在使用 WMI 方法遇到问题,它似乎只在我的 Vista 机器上返回 1 个显示器,查看文档发现它在非 WDDM 设备上无法正常工作。
EnumDisplayDevices 从后台服务(尤其是在 Vista 上)运行时似乎有点问题,如果它在会话 0 中,它将不返回任何信息。
有没有其他人必须做类似的事情(为所有连接的有源监视器找到唯一的模型字符串?)
哪种方法效果最好?