我需要获取辅助监视器的设备名称。然而,当我只是尝试检索设备名称,输出为DISPLAY1, DISPLAYV1
等辅助监视器的获取名称
不过,我需要的时候,我们检查屏幕分辨率,如显示名称这里提到的名字显示:
首先我不知道从哪里我可以获得这个字符串。在阅读一点,我想这是该设备的friendlyname
。不过我不确定,因为在调用这个函数时,调用EnumDisplaySetting()时一直给我Unhandled Exception: Could not access memory location
。所以我一直无法确认这个友好名称是什么。我相信,未处理的异常是由于DISPLAY_DEVICE中driverextra的DISPLAY_DEVICE分配的内存不正确导致的。我相信这是因为:如果iModeNum比显示设备的最后一个图形模式的指数大于
的功能失效。
提到here
而且我不明白需要多少内存分配给到
DISPLAY_DEVICE-> dmDriverExtra,因为它已经在同一链路提到:
之前调用EnumDisplaySettings,将dmSize成员设置为sizeof(DEVMODE),并将dmDriverExtra成员设置为指示可用于接收私有驱动程序数据的额外空间的大小(以字节为单位)。
所以我的问题是多方面的:
1)需要多少内存分配给dmDriverExtra?
2)friendlyname是我需要访问在屏幕分辨率显示选项卡中提供的名称的正确参数。或者如果不是,我需要什么其他参数?
3)这是由于不正确的内存分配引起的未处理的异常,还是有其他原因呢?
4)有没有其他方法可以访问辅助监视器的友好名称?
输出是:'Monitor Name是:\\。\ DISPLAY1监视器名称是\\。\ DISPLAY2',而我需要设备专用名称。例如,当我连接辅助显示器时,在屏幕分辨率选项卡中,显示器名称是** TopFoison LCD **,因此我需要读取该字符串。我相信友好名称会从[这里]提到的内容返回(https://msdn.microsoft.com/en-us/library/windows/hardware/ff552837(v = vs.85).aspx)**对于打印机,指定“友好名称”;例如PCL/HP LaserJet中的“PCL/HP LaserJet”。** – annie1994
@ annie1994 - 更新了我的答案。该程序现在使用物理监视器API来获取用户友好的监视器名称。与dxva2.lib链接。 – selbie