一个可靠的方式来识别显示设备

本文关键字:方式 识别 显示设备 一个 | 更新日期: 2023-09-27 18:13:46

我一直在研究一种识别显示设备(在我的情况下是电视)的解决方案,以保持主要布局,特别是为使用多显示器而设计的。

假设我连接了6台电视。(通常3个通过HDMI端口和其他3个通过DVI端口(使用DVI到HDMI适配器))和他们的物理位置是3x2这样:

TV1……天空……TV3

TV4……TV5……TV6

我想在每个特定的电视上显示一些全屏内容。内容1必须转到TV1,内容2必须转到TV2等等……换句话说:我需要将我的内容推送到DisplayDevice(电视)-而不是任何位置或屏幕,因为它们可能会因Windows行为而改变。(见下文)

你可能知道,Windows并不按照你连接它们的顺序来列举显示设备(或者实际上根本没有任何规则?)它使用一种完全不同的方式来枚举显示,例如:

'。' DISPLAY3…'。' DISPLAY6…' ' DISPLAY1。

'。' DISPLAY4…'。' DISPLAY2…' ' DISPLAY5。

我做什么来克服这个,我命令在显示设置手动当我完成连接所有的电视,以匹配他们的真实位置。

但是这里有一个问题:一些电视型号在关机(或设置为待机模式)时只是假装它们已经拔掉了插头,这导致Windows从系统中删除显示设备,并重新枚举显示设备。

由于这种行为(一些电视型号和Windows本身),我不能指望Screen。DisplayName属性甚至屏幕。位置,因为它们是变量。它们都在重新枚举过程后立即更改。

目前为止我尝试过的解决方案

我试图获得所有显示设备的序列号,认为我可以找到一种方法将这些数字与Screen.DisplayName相关联。我实际上管理通过使用SetupAPI的,EnumDisplayDevices但这都去了垃圾后,我意识到大多数电视没有一个有效的SerialNumber。即使是三星电视也没有序列号(但三星显示器肯定有),所以我猜这是关于"显示器"answers"显示器"之间的区别。和"televisoin"

毕竟. .

我仍在寻找解决这个问题的方法。我想到的另一个想法是,也许我应该停止尝试将内容推送到显示设备(因为它们是不可识别的)也许我应该尝试将内容推送到图形卡的端口,这意味着我必须确定图形卡的哪个端口与哪个显示设备(屏幕)相关,但我都在谈论没有任何知识-甚至不知道这样的事情是否可能。

我正在征求您的意见,谢谢。

一个可靠的方式来识别显示设备

当您使用DVI时,可能有一个硬件解决方案:EDID管理器。这些设备模拟一个有效的EDID,即使它后面的监视器被关闭。