繁体   English   中英

如何检测显示器是否是投影仪?

[英]How to detect if monitor is a projector?

有没有办法使用Windows API来检测特定显示器是投影仪(投影仪)而不是屏幕?

(我正在编写一个投影映射桌面应用程序,我希望它能自动检测投影机是否已连接并处于活动状态,以便用户将现实与预览进行比较。)

我已经使用EnumDisplayMonitors和EnumDisplayDevices来查找监视器,但我找不到任何标志或其他显示类型的指示。 我查看了DEVMODE和DISPLAY_DEVICE以及后者指向的注册表项。 我没有看到可以区分屏幕和投影仪的DeviceCapabilities或GetDeviceCaps调用。 我还查看了设备管理器,看看是否有一个属性区分我的常规显示器和投影机,但我找不到任何东西。 所以也许没有办法做到这一点。

但是,屏幕分辨率控制面板小程序将投影机识别为“PROJECTOR”,同时将我的主显示器识别为“Dell U3011”。 使用EnumDisplayDevices,我可以从DISPLAY_DEVICE获得“Dell U3011”字符串,但是,对于投影仪,我只得到“Generic PnP Monitor”。 不知何故,小程序必须在其他地方寻找获得“PROJECTOR”字符串,或者它显示“PROJECTOR”用于任何似乎是投影仪的通用PnP监视器。 那它看起来在哪里,它是如何知道的?

我相信答案是没有可靠的方法来做到这一点。

控制面板显示的“PROJECTOR”字符串是系统从EDID信息中提取的任意文本。 据我所知,Windows实际上“不知道”显示器是投影仪还是LCD面板或CRT管。

EDID信息似乎没有标记来指示这是否是投影仪。 我看到一个注意事项,投影仪通常会将一个或两个物理图像尺寸(以厘米为单位测量的尺寸)设置为零。 但这是在EDID 1.4的描述中,我的大多数设备都使用EDID 1.3。 实际上,我尝试的投影机都没有任何物理尺寸的0,所以它不是一个可靠的信号。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM