Java ScreenDevice.getIDstring()奇怪值

Java ScreenDevice.getIDstring()奇怪值,java,c++,windows,native,multiple-monitors,Java,C++,Windows,Native,Multiple Monitors,我正在创建一个Java应用程序,它将在Linux和Windows上运行。应用程序将为多个监视器配置执行本机代码。因此,我想将监视器的ID从Java传递到本机代码。这让我想到了Java的ScreenDevice.getIDstring() Javadocs声称该方法对于调试很有用,但它也唯一地标识监视器。对于Linux设备,它返回一个可用的ID字符串,该字符串允许本机代码快速检索所需的监视器对象 但是,在Windows上,对于第一次显示,该方法只返回/display0,然后对随后的每次显示进行向上

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

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

但是,在Windows上,对于第一次显示,该方法只返回
/display0
,然后对随后的每次显示进行向上计数(无论图形卡是否包含两个监视器,或者监视器是否位于单独的图形卡上)

当谈到Windows C++代码时,我尝试使用<代码>枚举播放设备< /C> >并查看相应的DeviceIDs和DeviceStrings。这些与Java的值不匹配:

  • 第一个监视器-Java=
    /display0
    ,Windows=
    \\。\DISPLAY1
  • 第二个监视器-Java=
    /display1
    ,Windows=
    \\。\DISPLAY7
我真的很困惑,这个
/display#
ID值是从哪里来的。。。在运行本机Windows C++代码时,在哪里可以获得相同的<代码> /显示> <代码>值? 注意:从技术上讲,可以循环所有现有的显示,以尝试匹配操作系统本机代码和Java之间的X/Y/width/height,但这需要大量工作,而且效率不高。我认为这是一个可能的解决办法,但这不是很理想