返回
电脑显示器枚举方法:逐一解析七种不同选择
windows
2024-03-07 09:18:55
枚举计算机上显示器的终极指南
简介
对于如何枚举计算机上的显示器,有七种不同的方法,但它们提供的结果却不尽相同。这篇文章将深入探讨这些方法,解释它们的差异并指导您选择正确的枚举方法。
枚举方法
1. EnumDisplayDevices
此方法返回活动的显示设备列表,除非有一个活动的显示器和一个已连接的非活动显示器。
2. EnumDisplayMonitors
此方法返回活动的显示器列表。
3. WMIMonitorID
此方法返回已连接(不一定是活动的)显示器列表。
4. Win32_DesktopMonitor WMI
此方法仅返回一个显示器(即使有其他非活动显示器),其行为不符合预期。
5. Setup API
此方法返回已连接(不一定是活动的)显示器列表。
6. DXGI
此方法返回活动的显示器列表,并使用适配器-显示器的层次结构。
7. CCD
此方法提供目标和源之间所有可能的路径,并且似乎是最可靠的枚举方法。
结果差异
不同枚举方法提供的结果差异如下:
- 已连接的显示器:WmiMonitorID、Setup API
- 活动的显示器:EnumDisplayMonitors、DXGI
- 安装的显示器:EnumDisplayDevices(在某些情况下)
- 活动路径:CCD
适配器和显示器
DXGI、CCD 和 EnumDisplayDevices 使用适配器-显示器的层次结构,但适配器的定义因方法而异。
- DXGI:适配器是物理图形设备。
- CCD:适配器是连接到视频端口的设备。
- EnumDisplayDevices:适配器是监视器的制造商。
使用场景
选择合适的枚举方法取决于您的使用场景:
- 枚举所有已连接的显示器: WmiMonitorID、Setup API
- 枚举所有活动的显示器: EnumDisplayMonitors、DXGI
- 枚举所有可用的显示器(包括已连接但非活动的显示器): EnumDisplayDevices
- 查询目标和源之间的显示路径: CCD
常见问题解答
- 镜像显示器如何枚举?
如果使用 EnumDisplayMonitors、DXGI 或 CCD,则镜像的显示器将被视为一个显示器。 - 扩展显示器如何枚举?
如果使用 EnumDisplayMonitors、DXGI 或 CCD,则扩展的显示器将被视为多个显示器。 - 如果计算机有多个显卡但没有多个输出,会怎样?
只有活动显卡的显示器将被枚举。 - 在虚拟机环境中,枚举结果会如何?
结果将取决于虚拟机配置和主机环境。 - 如何获取显示器的附加信息,例如分辨率和刷新率?
可以通过其他 API 或直接查询显示驱动程序来获取这些信息。
结论
了解不同显示器枚举方法之间的差异对于选择正确的工具至关重要。本指南提供了全面概述,可帮助您根据特定需求做出明智的决定。