C ++以编程方式获取显示数量?

时间:2015-08-11 19:55:44

标签: c++ windows api indexing monitor

我正在尝试编写一个涉及激活/停用监视器的程序。

我目前正在使用EnumDisplayDevicesChangeDisplaySettingsEx的电话来完成大量工作。

但是,EnumDisplayDevices使用索引(在文档中称为iDevNum)来确定您正在谈论的显示。

但是,无论何时激活或停用监视器,这些索引都会发生变化。

例如,如果我们连接了2个显示器并断开了索引0处的显示,那么第二个显示(原来是索引1)现在变为索引0。

当查看控制面板窗口的屏幕分辨率时,这并不是很明显,因为每个显示器都有一个看起来与它们保持一致的数字,无论它们是哪个显示索引。

例如,如果我们按照上面关于停用索引为0的监视器1的示例,控制面板仍会显示第二个监视器,编号为2,尽管EnumDisplayDevices使用索引0访问它。

因此,我想知道是否有办法为显示器获取这些更一致的ID?或者如果没有,有没有办法让Windows不自动重新排列显示列表,这样如果断开索引0,索引0保持断开连接并且不会自动将索引1向下移动?

0 个答案:

没有答案