【发布时间】:2013-02-09 04:58:18
【问题描述】:
我通过检查值DEV_BROADCAST_DEVICEINTERFACE.dbcc_name 找到了监视器的设备名称,并且我试图在函数EnumDisplaySettings() 中使用该设备名称(设备名称是第一个参数那个函数)。
我的问题:函数EnumDisplaySettings()总是返回0,即失败。我相信它失败了,因为 MSDN 说 EnumDisplaySettings() 的第一个参数应该是 DISPLAY_DEVICE.DeviceName returned from EnumDisplayDevices 而我的设备名称来自 DEV_BROADCAST_DEVICEINTERFACE.dbcc_name。
使用DEV_BROADCAST_DEVICEINTERFACE.dbcc_name,我得到第二台显示器的设备名称\\?\DISPLAY#GSM3AD7#5&20a3f50d&0&UID513#{866519b5-3f07-4c97-b7df-24
c5d8a8ccb8},而EnumDisplayDevices() 给我设备名称\\.\DISPLAYV1。
是否可以使用 EnumDisplaySettings(),其中第一个参数是从函数 DEV_BROADCAST_DEVICEINTERFACE.dbcc_name 检索到的设备名称?
我问的原因是:当第二台显示器连接到计算机时,我想更改该显示器的显示设置。但是在监视器连接时,我通过DEV_BROADCAST_DEVICEINTERFACE.dbcc_name 通知了它的设备名称,它(正如我上面解释的)与 EnumDisplayDevices() 为完全相同的设备返回的名称不同。而且我不知道如何通过枚举所有使用 EnumDisplayDevices() 的显示设备来识别第二台显示器?有什么想法可以使用 EnumDisplayDevices() 枚举所有显示设备并识别刚刚连接到计算机的正确显示器/设备吗?
【问题讨论】: