如何使用 nsis 获取多个显卡信息?
Posted
技术标签:
【中文标题】如何使用 nsis 获取多个显卡信息?【英文标题】:How to get multiple graphic cards information using nsis? 【发布时间】:2014-08-27 11:33:07 【问题描述】:我正在尝试使用 NSIS 创建安装程序,并且有一个用于检查硬件要求的自定义页面。目前我使用的是HwInfo plug-in,但问题是即使桌面有多个显卡,GetVideoCardName函数也只返回1个显卡名称。
如何使用 NSIS 获取所有已安装的显卡名称?
更新:
我使用WMI header 来获取所有显卡名称。
如果有人有更好的选择,请告诉我。
【问题讨论】:
为什么需要知道?您是否正在安装游戏并想要验证一些性能要求? 只有在有 VGA 插件的情况下才能运行安装程序。但是,多个桌面可能有多个 VGA 插件。 【参考方案1】:您可能需要编写自己的自定义插件或修改 HwInfo 插件。
如果您要安装游戏,您可能需要查看DirectDrawEnumerateEx 和类似功能,或者可能需要查看EnumDisplayDevices 以了解 GDI 级别的设备。
【讨论】:
【参考方案2】:除了安德斯回答:我也是这么想的——适配HwInfo插件并没有那么难。你需要做什么?
-
sourcecode 可在 HwInfo 页面找到
从源代码中可以看到
GetVideoCardName()
(NSISFunctions.cpp
)方法调用了HardwareInfo.cpp
GetVideoAdapterDescription()
方法。
现在您需要迭代显卡并返回一个数组。有关如何执行此操作的一些灵感,请查看this。
编译并创建一个新的 DLL 版本
创建一个新版本并添加一个自述文件(包括描述、学分等)
Register 或 login 到 nsis,并上传新版本并更新页面本身
值得贡献(我过去曾为 nsis 贡献过),因为每个人都会受益。
【讨论】:
以上是关于如何使用 nsis 获取多个显卡信息?的主要内容,如果未能解决你的问题,请参考以下文章
如何在运行时 (NSIS) 中获取 nsh 代码中丢失的 dll 文件错误回调
如何从 Electron-builder NSIS 获取选定的语言