Как получить информацию о нескольких графических картах с помощью nsis?
Я пытаюсь создать установщик, используя NSIS, и есть одна настраиваемая страница для проверки требований к оборудованию. В настоящее время я использую плагин HwInfo, но проблема в том, что функция GetVideoCardName возвращает только 1 имя графической карты, даже если на рабочем столе несколько графических карт.
Как я могу получить название всех установленных графических карт с помощью NSIS?
ОБНОВИТЬ:
Я использую заголовок WMI, чтобы получить все названия графических карт.
Если у кого есть лучший вариант, пожалуйста, скажите мне.
2 ответа
Вам, вероятно, нужно написать свой собственный плагин или изменить плагин HwInfo.
Если вы устанавливаете игру, вам может понадобиться взглянуть на DirectDrawEnumerateEx и аналогичные функции или, возможно, EnumDisplayDevices для устройств на уровне GDI.
Кроме ответа Андерса: я тоже так думал - адаптировать плагин HwInfo не так уж и сложно. Что нужно сделать?
- Исходный код доступен на странице HwInfo
- Из исходного кода вы видите, что метод
GetVideoCardName()
(вNSISFunctions.cpp
) вызываетGetVideoAdapterDescription()
метод вHardwareInfo.cpp
, - Теперь вам нужно перебрать графические карты и вернуть массив. Для некоторого вдохновения о том, как сделать это, проверьте это.
- Скомпилируйте и создайте новую версию DLL
- Создайте новую версию и добавьте файл readme (с описанием, кредитами и т. Д.)
- Зарегистрируйтесь или войдите на nsis, загрузите новую версию и обновите саму страницу
Стоит внести свой вклад (я участвовал в nsis в прошлом), так как все выигрывают.