Как получить информацию о нескольких графических картах с помощью nsis?

Я пытаюсь создать установщик, используя NSIS, и есть одна настраиваемая страница для проверки требований к оборудованию. В настоящее время я использую плагин HwInfo, но проблема в том, что функция GetVideoCardName возвращает только 1 имя графической карты, даже если на рабочем столе несколько графических карт.

Как я могу получить название всех установленных графических карт с помощью NSIS?

ОБНОВИТЬ:

Я использую заголовок WMI, чтобы получить все названия графических карт.

Если у кого есть лучший вариант, пожалуйста, скажите мне.

2 ответа

Вам, вероятно, нужно написать свой собственный плагин или изменить плагин HwInfo.

Если вы устанавливаете игру, вам может понадобиться взглянуть на DirectDrawEnumerateEx и аналогичные функции или, возможно, EnumDisplayDevices для устройств на уровне GDI.

Кроме ответа Андерса: я тоже так думал - адаптировать плагин HwInfo не так уж и сложно. Что нужно сделать?

  1. Исходный код доступен на странице HwInfo
  2. Из исходного кода вы видите, что метод GetVideoCardName()NSISFunctions.cpp) вызывает GetVideoAdapterDescription() метод в HardwareInfo.cpp,
  3. Теперь вам нужно перебрать графические карты и вернуть массив. Для некоторого вдохновения о том, как сделать это, проверьте это.
  4. Скомпилируйте и создайте новую версию DLL
  5. Создайте новую версию и добавьте файл readme (с описанием, кредитами и т. Д.)
  6. Зарегистрируйтесь или войдите на nsis, загрузите новую версию и обновите саму страницу

Стоит внести свой вклад (я участвовал в nsis в прошлом), так как все выигрывают.

Другие вопросы по тегам