【问题标题】:Get video adapter that the monitor is plugged to获取显示器插入的视频适配器
【发布时间】:2013-09-23 21:38:11
【问题描述】:

我将多台显示器插入机器:其中 2 台插入外部视频适配器,其中 2 台插入内部视频芯片。 我想知道外接视频适配器插了哪些显示器,如何找出来?

我查看了EnumDisplayDevices,发现DISPLAY_DEVICE 结构具有DISPLAY_DEVICE_PRIMARY_DEVICE 标志,它可以显示主屏幕是什么视频设备。但这还不足以解决整个任务。

更新:

我试过EnumDisplayDevices,在它的DISPLAY_DEVICE 对象中有一个字段DeviceString

DISPLAY_DEVICE DispDev; 
ZeroMemory(&DispDev, sizeof(DispDev));
DispDev.cb = sizeof(DispDev); 
DWORD nDeviceIndex = 0;
EnumDisplayDevices(NULL, nDeviceIndex, &DispDev, 0);

// DispDev.DeviceString now is what I need

它包含视频适配器的名称,例如Intel(R) HD Graphics 4000。 但是名字可以不一样,怎么区分集成视频和外接视频

【问题讨论】:

  • 这不能在 C++ 中完成。您的平台要求是什么?
  • 目前仅适用于 Windows XP。
  • @IInspectable 这毫无意义,整个 Windows API 都可以从 C++ 调用 - 还是说没有函数可以执行 OP 的要求?
  • 我已为我的问题添加了更新。可以为每个监视器获取视频适配器的名称。但没有关于视频适配器类型(集成或外部)的信息
  • 你为什么不记住用户上次打开窗口的那个窗口并再次打开它呢?这样您就不必担心什么窗口连接到什么。让用户告诉你。

标签: c++ windows winapi multiple-monitors


【解决方案1】:

没有办法知道什么显卡是内部或外部的,因为这个概念在 Windows 中不存在。您可能可以从名称中推断出它,但这可能会停止使用制造商提供的下一个显卡生成/命名方案。

您唯一能做的就是为带有图形卡的用户提供一个列表,让他们指出他们希望应用程序运行在哪一个上。

这也涵盖了内部显卡更好/更快/更适合运行软件的情况。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-17
    • 2011-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-26
    相关资源
    最近更新 更多