Получить видеоадаптер, к которому подключен монитор

У меня подключено несколько мониторов к машине: 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,
Но имена могут быть разными, как разделить интегрированное видео и внешнее видео

2

Решение

Нет никакого способа узнать, какая видеокарта является внутренней или внешней, так как эта концепция отсутствует в Windows. Вы можете вывести его из названия, но это, вероятно, перестанет работать со следующей схемой генерации / именования графических карт от факториста.

Единственное, что вы можете сделать, это предоставить пользователю список с графическими картами и позволить им указать вам, на каком из них они хотели бы работать.

Это также относится к случаю, когда внутренняя видеокарта лучше / быстрее / больше подходит для запуска программного обеспечения.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]