我一直在寻找一个解决scheme来识别显示设备(在我的情况下是telivisions),以保持专门devise使用多显示器的主布局。
假设我有6台电视机连接。 (通常其中3个通过HDMI端口,另外3个通过DVI端口(使用DVI-to-HDMI适配器)),其物理位置是3×2像这样:
TV1 … TV2 … TV3
TV4 … TV5 … TV6
使用循环与对象名称
如何在系统托盘中显示图标?
log4net跨平台XMLconfiguration
在windows 8中检测重启 – 未调用SessionEnding
当Readonly = false时,性能计数器显示不同的值
目标
我想在每个特定的电视上显示一些全屏内容。 Content1必须去TV1,Content2必须去TV2等…换句话说: 我需要推动我的内容到displayDevice(电视) – 而不是任何位置或屏幕,因为他们可以改变,由于windows的行为。 (见下文)
正如你可能知道的那样,windows并没有按照你连接的顺序来枚举显示设备(或者根本不是基于任何规则?)。 它使用完全不同的方式来枚举显示,例如:
。 disPLAY3 … 。 disPLAY6 … 。 disPLAY1
。 disPLAY4 … 。 disPLAY2 … 。 disPLAY5
我做了什么来解决这个问题 ,我完成连接所有的电视机,以配合他们的真实位置手动订购显示设置的电视。
问题
但是这里有一个问题:有些电视机型只是假装他们被closures(或设置为待机模式)时被拔掉,导致windows将显示设备从系统中删除 ,并重新枚举显示设备重新。
由于这种行为(一些电视模型和windows本身),我不能指望Screen.displayname属性,甚至Screen.Location,因为它们是variables 。 在重新枚举之后,它们都发生了变化。
我已经尝试过的解决scheme
我试图获得所有显示设备的序列号,认为我可以find一种方法将这些数字与Screen.displayname关联起来。 那么,我实际上通过使用SetupAPI的EnumdisplayDevicespipe理得到那里,但是我意识到大多数电视没有一个有效的SerialNumber后,这一切都变成垃圾。 即使三星电视没有SerialNumber(但三星显示器肯定是这样 – 所以我想这是关于“显示器”和“电视”之间的区别)
毕竟..
我仍然在寻找解决这个问题的方法。 我想到的另一个想法是,也许我应该停止尝试将内容推送到显示设备(因为它们是无法识别的)也许我应该尝试将内容推送到显卡的端口,这意味着我必须确定哪些端口的显示卡与哪个显示设备(屏幕)相关,但是我都在说话而没有任何关于它的知识 – 甚至不知道这样的事情是否可能。
我正在寻找你的build议,现在感谢。
如何监视.Net应用程序的跟踪输出?
MonoDevelop for linux在linux上的应用程序
.Net核心忽略环境variablesDOTNET_SKIP_FirsT_TIME_EXPERIENCE
C# – closuressubprocess的inputstream
在windows中枚举特定types的文件
当您使用DVI时,可能会有硬件解决方案来解决您的问题:EDID管理器。 即使关闭后面的显示器,这些设备也会模拟有效的EDID。
总结以上是内存溢出为你收集整理的一种可靠的方法来识别显示设备?全部内容,希望文章能够帮你解决一种可靠的方法来识别显示设备?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)