0

我很好奇 WMI 是如何工作的。特别是,我目前正在使用 WMI 通过“Select * from Win32_DesktopMonitor”查询物理监视器,因为它始终为我提供跨多个平台的正确结果,因为我想知道物理监视器的数量,而不是由函数返回的虚拟监视器,例如GetSystemMetrics 和 EnumDisplays。我还探索了 SetupAPI,它像设备管理器一样检查注册表,但在 Vista 之前的 Windows 版本中会错误地返回幻像监视器。

我尝试使用 wbemtest.exe 生成的 procmon.exe 和我自己的可执行文件进行查询来跟踪 API 调用和观察事件,但没有找到太多。

任何对 WMI 内部工作原理的深入了解、API 调用的更深入跟踪或对监视器进行计数的可靠方法都将不胜感激。

小笔记:使用 C++

4

2 回答 2

2

还值得检查您感兴趣的类属性的 MappingStrings 限定符(如果存在)。对于 Win32_DesktopMonitor,例如:

设备ID:
Win32API|Windows GDI|HMONITOR

安装日期:
MIF.DMTF|ComponentID|001.5

监视器制造商:
Win32Registry

监视器类型:
Win32Registry

PixelsPerXLogicalInch:
Win32API|设备上下文函数|GetDeviceCaps

于 2010-01-21T15:31:47.290 回答
1

它与设备驱动程序对话,没有人知道什么硬件可用。您可以在这篇Microsoft 文章中了解更多信息。

于 2010-01-19T21:14:13.427 回答