gpt4 book ai didi

c++ - 将 EnumDisplaySettings 与非标准设备名称一起使用

转载 作者:太空宇宙 更新时间:2023-11-04 11:59:23 26 4
gpt4 key购买 nike

我通过检查值 DEV_BROADCAST_DEVICEINTERFACE.dbcc_name 找到了监视器的设备名称,我正尝试在函数 EnumDisplaySettings 中使用该设备名称()(设备名称是该函数的第一个参数)。

我的问题:EnumDisplaySettings() 函数总是返回 0,即失败。我相信它失败了,因为 MSDN 说 EnumDisplaySettings() 的第一个参数应该是从 EnumDisplayDevices 返回的 DISPLAY_DEVICE.DeviceName 而我的设备名称来自 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() 枚举所有显示设备并识别刚刚连接到计算机的正确显示器/设备的任何想法?

最佳答案

我不能保证,但我猜测只要显示设备保持连接状态,它就会保留其名称。

在那个假设下,我会运行 EnumDisplayDevices当你的程序启动时。连接新显示器时,使用 EnumDisplayDevices再次将设备列表与之前的列表进行比较,然后是 EnumDisplaySettings在新添加到列表中的任何设备上。

完成后,将旧列表替换为新列表,您就可以为下次用户插入另一台显示器做好准备。

关于c++ - 将 EnumDisplaySettings 与非标准设备名称一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14785138/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com