Windows 如何以编程方式从win7中的“屏幕分辨率”对话框中获取监视器编号?
当您按下屏幕分辨率对话框中的标识按钮时,Windows会在每个显示器上显示白色的大显示器号。在WindowsXP(使用EnumDisplayDevices)中,通过编程很容易找到它们以及监视器坐标,但在Windows7上,它被破坏了。我该怎么做Windows 如何以编程方式从win7中的“屏幕分辨率”对话框中获取监视器编号?,windows,winapi,windows-7,windows-shell,multiple-monitors,Windows,Winapi,Windows 7,Windows Shell,Multiple Monitors,当您按下屏幕分辨率对话框中的标识按钮时,Windows会在每个显示器上显示白色的大显示器号。在WindowsXP(使用EnumDisplayDevices)中,通过编程很容易找到它们以及监视器坐标,但在Windows7上,它被破坏了。我该怎么做 EnumDisplayDevices和GetMonitorInfo在Windows 7中用于此目的 我尝试获取MonitorInfo,然后从MonitorInfo.szDevice(即\.\Display2)提取监视器编号,但没有成功。两年前另一个人声称
有人知道路吗?我从来都不想知道我的Windows应用程序中监视器的数量,但是你可以使用参数值调用SM\u CMONITORS来获取桌面上显示器的数量 我调用我的Windows应用程序函数
GetSystemMetrics
,主要使用参数值SM_CXVIRTUALSCREEN
,SM_cVirtualScreen
,SM_XVIRTUALSCREEN
和SM_YVIRTUALSCREEN
,以避免在显示区域之外完全或部分打开应用程序窗口。但是,如果用户将显示区域扩展到多个监视器上,但并非所有监视器都打开,则应用程序窗口可能不可见
对于uiAction
参数,具有值SPI_GETWORKAREA
的函数对于了解应用程序窗口的位置以及它在主屏幕上的宽度和高度有多大也非常有用,而不会被始终位于顶部的其他窗口(条)部分隐藏
另请参见您的Windows应用程序中是否需要来自监视器的更多信息。我从来都不想知道Windows应用程序中监视器的数量,但您可以使用参数值
SM\u CMONITORS
调用以获取桌面上显示监视器的数量
我调用我的Windows应用程序函数GetSystemMetrics
,主要使用参数值SM_CXVIRTUALSCREEN
,SM_cVirtualScreen
,SM_XVIRTUALSCREEN
和SM_YVIRTUALSCREEN
,以避免在显示区域之外完全或部分打开应用程序窗口。但是,如果用户将显示区域扩展到多个监视器上,但并非所有监视器都打开,则应用程序窗口可能不可见
对于uiAction
参数,具有值SPI_GETWORKAREA
的函数对于了解应用程序窗口的位置以及它在主屏幕上的宽度和高度有多大也非常有用,而不会被始终位于顶部的其他窗口(条)部分隐藏
另请参阅Windows应用程序中是否需要来自监视器的更多信息。对于支持WDDM的Windows版本(Windows 7支持WDDM),您只需使用DirectX的DXGI即可。DXGI允许您非常轻松地枚举现有的显示适配器、每个适配器的可用显示输出以及每个显示输出支持的显示模式。在枚举时,您可以读取大量其他数据,如句柄、标识符和设备名称。所有这些都可以轻松地用于检索工作区域。适配器和输出的枚举顺序由系统定义,并与配置屏幕的顺序相匹配
有关更多信息,请参见此处:对于支持WDDM的Windows版本(Windows 7支持WDDM),您只需使用作为DirectX一部分的DXGI即可。DXGI允许您非常轻松地枚举现有的显示适配器、每个适配器的可用显示输出以及每个显示输出支持的显示模式。在枚举时,您可以读取大量其他数据,如句柄、标识符和设备名称。所有这些都可以轻松地用于检索工作区域。适配器和输出的枚举顺序由系统定义,并与配置屏幕的顺序相匹配
有关更多信息,请参见此处:Windows不提供允许应用程序获取显示设置应用程序使用的数字的功能。这些数字本身仅适用于显示设置应用程序,在系统或用于查询/设置显示拓扑的中没有任何意义
最好的选择是应用程序在提示用户选择显示器时定义自己的索引分配标准。Windows不提供允许应用程序获取显示器设置应用程序使用的数字的功能。这些数字本身仅适用于显示设置应用程序,在系统或用于查询/设置显示拓扑的中没有任何意义 最好的选择是,应用程序在提示用户选择显示时定义自己的索引分配标准。可能重复的可能重复的