gpt4 book ai didi

c# - 如何将重复的监视器检测为单独的屏幕

转载 作者:太空狗 更新时间:2023-10-30 01:36:25 25 4
gpt4 key购买 nike

使用 this 中的答案问题 我可以获得“屏幕”计数。但是,这似乎不适用于设置为“重复”的监视器(报告一个监视器而不是 2 个)。我的应用程序提示用户从 VGA 切换到 HDMI(这是在具有两个输出端口的设备上),然后输入“你能看到这个吗?”屏幕上的提示以验证两个视频端口是否正常工作。

我试图在显示提示之前检测到切换已经发生,但由于上述问题,代码没有看到监视器计数递减,然后递增(这就是我检测切换的方式)。

如果所有内容都设置为重复,我如何检测视频设备切换?如果监视器设置为“扩展”,则现有代码有效。还有一个始终存在的内部视频设备(不尝试测试这个)。

最佳答案

参见 This question并使用为 QueryDisplayConfig 提供的(并在答案中修复)包装器。

更改导入的签名,将 out DisplayConfigTopologyId topology 作为最后一个参数。

使用 QueryDisplayFlags.DatabaseCurrent 作为显示标志,否则您将获得状态 87(无效参数)

在调用 QueryDisplayFlags 之后,拓扑将是CloneExtend

调用方法...

var status = CCDWrapper.QueryDisplayConfig(
CCDWrapper.QueryDisplayFlags.DatabaseCurrent,
ref numPathArrayElements, pathInfoArray, ref numModeInfoArrayElements,
modeInfoArray, out currentTopologyId);

在我的测试中,numPathArrayElements 总是返回当前 In Use 的监视器数量。如果我将其更改为“仅显示屏幕 1”,它表示 1 个屏幕,内部拓扑。 “仅显示屏幕 2”返回时带有 1 个外部屏幕。 “克隆”显示了 2 个屏幕。

关于c# - 如何将重复的监视器检测为单独的屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22258906/

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