我正在尝试编写一个程序,用于在显示器失去连接且Windows无法正确重新配置其先前设置的情况下重新配置显示器。通常,如果您拔掉一个显示器,Windows似乎会跟踪显示器的配置设置。例如,我现在连接了三个显示器。如果我拔掉我的“主显示器”,Windows将使剩余的两个显示器中的一个成为主显示器。然后,如果我重新连接显示器,Windows通常会记住该显示器的配置,具体来说,在这种情况下,它是我的主显示器,并相应地设置它。
我目前正在使用EnumDisplayDevices、EnumDisplaySettings和ChangeDisplaySettingsEx来设置每个显示器的配置(分辨率、方向等)。但是,查看EnumDisplayDevices和EnumDisplaySettings用DISPLAY_DEVICE和DEVMODE结构填充的信息时,似乎没有任何东西能够唯一地标识显示器本身。我将从当前配置中获取可唯一标识每个显示器之间的值(例如.\DISPLAY1和.\DISPLAY2.\DISPLAY3),但是如果我拔掉具有标识符.\DISPLAY1的显示器,则下次运行时我将获得值.\DISPLAY1和.\DISPLAY2。因此,该值无法用于以后唯一识别特定的显示器。
是否有关于每个连接的显示器的唯一信息可以用于标识它们?我认为这样的信息可能存在的原因是,大多数情况下,如果我拔掉显示器并重新插入它,Windows将保留其配置。
我目前正在使用EnumDisplayDevices、EnumDisplaySettings和ChangeDisplaySettingsEx来设置每个显示器的配置(分辨率、方向等)。但是,查看EnumDisplayDevices和EnumDisplaySettings用DISPLAY_DEVICE和DEVMODE结构填充的信息时,似乎没有任何东西能够唯一地标识显示器本身。我将从当前配置中获取可唯一标识每个显示器之间的值(例如.\DISPLAY1和.\DISPLAY2.\DISPLAY3),但是如果我拔掉具有标识符.\DISPLAY1的显示器,则下次运行时我将获得值.\DISPLAY1和.\DISPLAY2。因此,该值无法用于以后唯一识别特定的显示器。
是否有关于每个连接的显示器的唯一信息可以用于标识它们?我认为这样的信息可能存在的原因是,大多数情况下,如果我拔掉显示器并重新插入它,Windows将保留其配置。
\DISPLAY\SomeValue\SomeLongTextWithNumbersLetters&Ampersands
的内容。(您也可能在ControlSet1下找到它。)这就是Windows识别显示器的方式,据我所知。 - Ken White