windows:获取监视器的数量,包括禁用的监视器

2023-12-14

EnumDisplayMonitors列出当前激活的所有监视器。但是,它似乎不会返回禁用的(即未选中“将我的桌面扩展到此显示器”的那些)。我如何获得包括残疾人在内的计数?


好的,首先您必须创建一个设备上下文:

http://msdn.microsoft.com/en-us/library/dd183490(v=VS.85).aspx以下代码将为您提供所有监视器:

CreateDC(TEXT("DISPLAY"),NULL,NULL,NULL)

然后,您将调用 DeviceContext 的 EnumDisplayDevices ,它将有一个指向 DISPLAY_DEVICE 结构的指针,其中包含有关显示设备设置的信息. http://msdn.microsoft.com/en-us/library/dd162609(v=VS.85).aspx

根据 MSDN:

要查询当前会话中的所有显示设备,请循环调用此函数,从将 iDevNum 设置为 0 开始,然后递增 iDevNum 直到函数失败。要选择桌面中的所有显示设备,请仅使用 DISPLAY_DEVICE 结构中具有 DISPLAY_DEVICE_ATTACHED_TO_DESKTOP 标志的显示设备。

要获取有关显示适配器的信息,请调用 EnumDisplayDevices,并将 lpDevice 设置为 NULL。例如,DISPLAY_DEVICE.DeviceString 包含适配器名称。

要获取有关显示监视器的信息,请首先调用 EnumDisplayDevices,并将 lpDevice 设置为 NULL。然后调用 EnumDisplayDevices,将 lpDevice 设置为 DISPLAY_DEVICE.DeviceName(第一次调用 EnumDisplayDevices 时将其设置为 DISPLAY_DEVICE.DeviceName,并将 iDevNum 设置为零)。那么 DISPLAY_DEVICE.DeviceString 就是显示器名称。

要查询与适配器关联的所有监视器设备,请在循环中调用 EnumDisplayDevices,其中 lpDevice 设置为适配器名称,iDevNum 设置为从 0 开始,iDevNum 设置为递增,直到函数失败。请注意,DISPLAY_DEVICE.DeviceName 会随着每次调用监视器信息而更改,因此您必须保存适配器名称。当适配器不再有监视器时,该功能将失败。

我不是一名 C++ 程序员,但是我必须编写一些用于显示的东西,当时我只是想帮助我记住的一点点。我对WINAPI有点生疏。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

windows:获取监视器的数量,包括禁用的监视器 的相关文章

随机推荐

  • 我直接从“Java all in one for Dummies”中取出这段代码......为什么它不起作用?

    import javax swing ImageIcon import javax swing JFrame import javax swing JLabel import javax swing JPanel SuppressWarni
  • re.search 和 re.match 有什么区别?

    两者有什么区别search and match Python 中的函数re module 我读过Python 2 文档 Python 3 文档 但我似乎从来不记得它 re match锚定在字符串的开头 这与换行符无关 所以它与使用不同 在模
  • Windows 服务器上的任务自动化软件[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 目前 我们的 Java 程序可以在 Windows 服务器上运行大量任务 出于效率和可维护性的原因 我们计划将其替换为开源任务自动化软件 以下是我们
  • 如何在AWS S3管理控制台上设置缓存控制标头

    我在 Internet Explorer 上渲染图像时遇到一些问题 我相信这可能是因为没有设置缓存控制标头 如何在 s3 Web 管理控制台上将缓存控制标头设置为单个文件 加载 S3 对象的属性面板后 展开元数据并添加 Cache Cont
  • 将字典写入文本文件?

    我有一本字典 正在尝试将其写入文件 exDict 1 1 2 2 3 3 with open file txt r as file file write exDict 然后我有错误 file write exDict TypeError m
  • 如何从文件中读取浮点数?

    当文件为字符串格式时 如何在 Python 中打开文件并读取文件中的浮点数 我还想更改每个浮点数的值并用新值重写文件 假设每行有一个浮点数 with open myfile as f floats map float f change fl
  • 如何抑制 StyleCop 警告?

    我正在使用 StyleCop 想要抑制一些不适合我的风格的警告 我更喜欢有解决方案 1 内联代码抑制2 全局设置抑制 我在网上搜索过但是仍然不确定如何进行压制 对于方法 1 他们说要添加以下行 程序集 SuppressMessage Mic
  • 表单提交后如何保留级联下拉列表选定的项目?

    当页面加载时 一切正常 但是 当我提交表单时 页面刷新后我的下拉列表会丢失以前选定的项目 如何修改我的函数以初始化下拉列表并保留先前选定的项目 在两个项目上 如果存在 这是我使用初始化下拉列表的 javascript 的视图 model M
  • 对 ArrayList 进行分页

    我正在尝试为中保存的值创建一个简单的分页例程ArrayList 基本上我想做的是渲染中的前五个元素ArrayList一开始去 然后当用户点击Next increment by another 5 and Previous decrease
  • 隐藏选择控件内的文本

    如何隐藏写在里面的文本部分option 我尝试过以下方法
  • MSEdgeDriver (Chromium) 不适用于版本 >= 79.0.313 (Canary)

    我在脚本中使用 Microsoft Edge Webdriver Chromium 和 Python3 webdriver配置如下 driveroptions Options driveroptions add argument inpri
  • 如何重置 CSS 网格中项目的宽度?

    我们有一个使用 Flexbox 完成的平铺项目的遗留部分 物品的容器是ul ul icon grid display flex flex wrap wrap list style none padding left 0 然后里面的物品是li
  • Laravel 复选框过滤器 ajax

    我需要实现一个基于ajax的空缺复选框过滤器 因此 我在页面上有一些类别 当用户标记某些复选框时 结果块仅显示所选类别中的空缺 如果没有选中复选框 页面将显示所有类别中的所有职位空缺 现在我有了当前的变体 但它不适用于复选框值数组 并且每次
  • 如何静态断言函数末尾无法到达

    我有一个相当复杂的match语句 带有嵌套ifs 等 位于函数末尾 每个分支都应该显式地从函数返回 或者调用一些 gt 函数 例如process exit 为了与其他程序员进行通信 并保护自己免受自己的伤害 我想告诉编译器断言此后的任何内容
  • Cassandra - 重叠数据范围

    我在 Cassandra 中有以下 任务 表 Task ID UUID 分区键 Starts On TIMESTAMP 聚类列 Ends On TIMESTAMP 聚类列 我想运行 CQL 查询来获取给定日期范围内的重叠任务 例如 如果我传
  • 在 Powershell 中,如何将消息框带到前台,并将焦点更改为消息框中的按钮

    在我的脚本中 当我打开消息框时 消息框始终在后台打开 位于运行的所有其他应用程序和窗口之后 我正在尝试做两件事 如果它们应该是两个问题 我很抱歉 但我认为密切相关 1 我希望消息框在需要呈现时显示在所有应用程序的前面 2 我想要将焦点更改为
  • 特征名称后面的特征是什么意思?

    我在阅读 Rust 时遇到了这个特征定义 trait Enchanter std fmt Debug 由此我了解到该特征的名称是Enchanter 但我不明白什么std Format Debug部分暗示 因为它也是一种特质 我认为 这是宣告
  • Jsoup div[class=] 语法有效,而 div.class 语法无效 - 为什么?

    对于以下 HTML 片段 div class class one class two class three classfour classfive classsix some inner content div 以下 Jsoup 选择器w
  • 为什么10000000*1000在java中给出141006540​​8? [复制]

    这个问题在这里已经有答案了 class a public static void main String arg int a 10000000 int b 1000 int c a b System out println c 输出是 14
  • windows:获取监视器的数量,包括禁用的监视器

    EnumDisplayMonitors列出当前激活的所有监视器 但是 它似乎不会返回禁用的 即未选中 将我的桌面扩展到此显示器 的那些 我如何获得包括残疾人在内的计数 好的 首先您必须创建一个设备上下文 http msdn microsof