我正在尝试编写一个涉及激活/停用监视器的程序。
我目前正在使用EnumDisplayDevices和ChangeDisplaySettingsEx的电话来完成大量工作。
但是,EnumDisplayDevices使用索引(在文档中称为iDevNum)来确定您正在谈论的显示。
但是,无论何时激活或停用监视器,这些索引都会发生变化。
例如,如果我们连接了2个显示器并断开了索引0处的显示,那么第二个显示(原来是索引1)现在变为索引0。
当查看控制面板窗口的屏幕分辨率时,这并不是很明显,因为每个显示器都有一个看起来与它们保持一致的数字,无论它们是哪个显示索引。
例如,如果我们按照上面关于停用索引为0的监视器1的示例,控制面板仍会显示第二个监视器,编号为2,尽管EnumDisplayDevices使用索引0访问它。
因此,我想知道是否有办法为显示器获取这些更一致的ID?或者如果没有,有没有办法让Windows不自动重新排列显示列表,这样如果断开索引0,索引0保持断开连接并且不会自动将索引1向下移动?