Ron*_*ovi 7 .net c# windows multiple-monitors edid
我一直在研究识别显示设备(在我的情况下是telivisions)的解决方案,以保持主要布局,特别设计为使用多显示器.
假设我连接了6台电视机.(通常其中3个通过HDMI端口,其他3个通过DVI端口(使用DVI到HDMI适配器)),它们的物理位置是3x2,如下所示:
TV1 ... TV2 ... TV3
TV4 ... TV5 ... TV6
我想在每个特定的电视上显示一些全屏内容.Content1必须转到TV1,Content2必须转到TV2等...换句话说:我需要将我的内容推送到DisplayDevice(电视) - 而不是任何位置或屏幕,因为它们可能因Windows行为而改变.(见下文)
您可能知道,Windows不会按照您连接它们的顺序枚举显示设备(或者实际上根本不基于任何规则?).它使用完全不同的方式枚举显示,例如:
\.\ DISPLAY3 ... \.\ DISPLAY6 ... \.\ DISPLAY1
\.\ DISPLAY4 ... \.\ DISPLAY2 ... \.\ DISPLAY5
我做了什么来解决这个问题,当我完成连接所有电视以匹配他们的真实位置时,我手动在显示设置中订购电视.
但有SA问题就在这里:一些电视模型只是假装喜欢他们已经被拔掉时,他们关闭(或设置为待机模式),并且会导致Windows 下降显示设备从系统和重新枚举的再次显示设备.
由于这种行为(某些电视模型和Windows本身),我不能指望Screen.DisplayName属性甚至Screen.Location,因为它们是变量.它们都在重新枚举过程后立即改变.
我试图获取所有显示设备的序列号,认为我可以找到一种方法将这些数字与Screen.DisplayName相关联.好吧,我实际上通过使用SetupAPI的EnumDisplayDevices来管理那里,但是在我意识到大多数电视没有有效的SerialNumber后,这一切都变成了垃圾.即便是三星电视也没有SerialNumber(但三星显示器肯定没有 - 所以我猜这是关于"显示器"和"电视"之间的区别)
我仍在寻找解决这个问题的方法.我想到的另一个想法是,也许我应该停止尝试将内容推送到显示设备(因为它们无法识别)也许我应该尝试将内容推送到显卡的端口,这意味着我必须确定哪些端口图形卡的关联与哪个显示设备(屏幕)有关,但我都在谈论它而不知道它 - 甚至不知道这样的事情是否可能.
我正在寻找你的建议,谢谢你们.
| 归档时间: |
|
| 查看次数: |
690 次 |
| 最近记录: |