ScreenDevice.getIDstring()奇怪的值

时间:2015-03-31 15:31:15

标签: java c++ windows native multiple-monitors

我正在创建一个可在Linux和Windows上运行的Java应用程序。应用程序将为多监视器配置执行本机代码。因此,我想将监视器的ID从Java传递给本机代码。这让我想到了Java的ScreenDevice.getIDstring()。

Javadocs声称此方法对于调试很有用,但它也唯一地标识了一个监视器。对于Linux设备,它返回一个可用的ID字符串,允许本机代码快速检索所需的监视器对象。

但是,在Windows上,该方法仅为第一个显示返回/display0,然后为每个后续显示向上计数(无论图形卡是否包含两个显示器,或者显示器是否位于不同的图形卡上)

说到Windows C ++代码,我尝试使用EnumDisplayDevices并查看相应的DeviceID和DeviceStrings。这些与Java的值不匹配:

  • First Monitor - Java = /display0,Windows = \\.\DISPLAY1
  • Second Monitor - Java = /display1,Windows = \\.\DISPLAY7

我真的很困惑这个/display# ID值来自哪里......在运行本机Windows C ++代码时,我在哪里可以获得相同的/display#值?

注意:技术上可以循环遍历所有现有显示以尝试匹配OS本机代码和Java之间的X / Y /宽度/高度,但这将是很多工作并且效率不高。我认为这是一个可能的解决方案,但它并不是很理想。

0 个答案:

没有答案
相关问题