有没有办法使用Windows API来检测特定显示器是投影仪(投影仪)而不是屏幕?
(我正在编写一个投影映射桌面应用程序,我希望它能自动检测投影机是否已连接并处于活动状态,以便用户将现实与预览进行比较.)
我已经使用EnumDisplayMonitors和EnumDisplayDevices来查找监视器,但我找不到任何标志或其他显示类型的指示.我查看了DEVMODE和DISPLAY_DEVICE以及后者指向的注册表项.我没有看到可以区分屏幕和投影仪的DeviceCapabilities或GetDeviceCaps调用.我还查看了设备管理器,看看是否有一个属性区分我的常规显示器和投影机,但我找不到任何东西.所以也许没有办法做到这一点.
但是,屏幕分辨率控制面板小程序将投影机识别为"PROJECTOR",同时将我的主显示器识别为"Dell U3011".使用EnumDisplayDevices,我可以从DISPLAY_DEVICE获得"Dell U3011"字符串,但是,对于投影仪,我只得到"Generic PnP Monitor".不知何故,小程序必须在其他地方寻找获得"PROJECTOR"字符串,或者它显示"PROJECTOR"用于任何似乎是投影仪的通用PnP监视器.那它看起来在哪里,它是如何知道的?
我想计算活动显示的数量.对于Mac,我可以使用以下内容:
CGDisplayCount nDisplays;
CGGetActiveDisplayList(0,0, &nDisplays);
log.printf("Displays connected: %d",(int)nDisplays);
Run Code Online (Sandbox Code Playgroud)
如何在Windows中实现相同的功能?我找到了EnumDisplayMonitors但我无法弄清楚如何使用它.