当您在屏幕分辨率对话框中按下识别按钮时,Windows会在每个显示器上显示大的白色显示器编号。很容易在Windows XP(使用EnumDisplayDevices)中以编程方式与监视器坐标一起找到它们,但在Windows 7上它已经坏了。我怎么能这样做?
有人知道吗?
答案 0 :(得分:1)
我从来不想在我的Windows应用程序中知道监视器的数量,但您可以使用参数值SM_CMONITORS
调用GetSystemMetrics function来获取桌面上的显示监视器数量。
我主要使用参数值GetSystemMetrics
,SM_CXVIRTUALSCREEN
,SM_CYVIRTUALSCREEN
和SM_XVIRTUALSCREEN
调用我的Windows应用程序函数SM_YVIRTUALSCREEN
,以避免完全打开应用程序窗口或部分位于展示区域之外。如果用户已将显示区域扩展到多个监视器上,但是并非所有监视器都已打开,则应用程序窗口仍然不可见。
SPI_GETWORKAREA
参数值为uiAction
的{{3}}函数对于了解应用程序窗口的位置以及主屏幕宽度和高度的大小也非常有用没有被其他窗户(酒吧)一直隐藏在顶部。
另请参阅SystemParametersInfo function,如果Windows应用程序中需要更多来自监视器的信息。
答案 1 :(得分:1)
Windows不提供允许应用程序获取显示设置应用程序使用的数字的功能。数字本身仅特定于显示设置应用,在系统或用于查询/设置显示拓扑的CCD APIs中没有意义。
最佳选择是让应用程序在提示用户选择显示时定义自己的索引分配标准。
答案 2 :(得分:0)
对于Windows 7支持WDDM的Windows版本,您可以简单地使用DXGI,它是DirectX的一部分。 DXGI允许您非常容易地枚举现有的显示适配器,每个适配器的可用显示输出以及每个显示输出支持的显示模式。在枚举时,您可以读出许多其他数据,如句柄,标识符和设备名称。所有这些都可以很容易地用于检索工作区域。枚举适配器和输出的顺序由系统定义,并与配置屏幕的顺序相匹配。
有关详细信息,请参阅此处:MSDN DXGI Overview