简介
从 Windows 8.1 开始,Microsoft 开始提供 Windows.System.Profile.SystemManufacturers
API,用于获取系统硬件信息。但是这个 API 只能在 UWP (Universal Windows Platform) 应用程序中使用。
而 @nodert-win8.1/windows.system.profile.systemmanufacturers
是一个 npm 包,它可以让我们在 Node.js 中使用这个 API。
在本文中,我们将学习如何安装并使用这个 npm 包,以及如何获取系统的硬件信息。
安装
安装这个 npm 包非常简单,只需要运行一条命令即可:
npm install @nodert-win8.1/windows.system.profile.systemmanufacturers
使用
在使用这个 npm 包之前,我们需要在运行环境中安装 windows-build-tools
:
npm install --global windows-build-tools
然后,我们可以通过以下方式获取系统厂商名称:
-- -------------------- ---- ------- ----- ------------------- - --------------------------------------------------------------------- ---------------------------------------------------- ---------------------- -- - ---------------- ------ ------------ -- ----------------------- -- ------------ -- - --------------------- ---
这个例子将打印出类似于以下内容的结果:
The system manufacturer is Dell Inc..
API
@nodert-win8.1/windows.system.profile.systemmanufacturers
npm 包只提供了一个方法:getFirstSystemManufacturerName()
。
这个方法将返回一个 Promise
,它的解析值是系统的厂商名称,如果出现错误,则会拒绝这个 Promise
。
深度指导
@nodert-win8.1/windows.system.profile.systemmanufacturers
包的源码是开放的,因此我们可以深入研究它的实现细节。在下面,我们将简要介绍一下这个包的工作原理。
前提条件
首先,让我们对架构、平台以及编译器等等的一些前提条件做一些约定:
- 架构: x64
- 平台: Windows 8.1 / Windows Server 2012 R2
- 编译器: Visual C++ 2010 (v10.0) 或更高版本
实现原理
该 npm 包的核心代码是一个 Native Addon,它使用 C++ 编写。该 Addon 调用 Windows.System.Profile.SystemManufacturers
API 并将结果传递给 JavaScript。为了使 C++ 代码能够在 Node.js 环境中编译和链接,我们使用了 node-gyp
工具。
该 Addon 的源代码可以在 ./src/win32/system-manufacturers.cc
文件中找到。
如果你非常熟悉 C++ 并且想要深入研究该 Addon 的源代码,请前往 Windows Kits/8.1/Headers/winrt/windows.system.profile.systemmanufacturers.h
文件中查找 SystemManufacturers
接口的实现。
开发指导
如果您想要开发一个类似的 Node.js 模块来调用其他 Windows API,请参阅 Creating Addons 以获取更多信息。
结论
在本文中,我们学习了如何安装和使用 npm 包 @nodert-win8.1/windows.system.profile.systemmanufacturers
,以及如何获取 Windows 系统厂商的名称。由于使用此 npm 包需要在运行环境中安装 Windows SDK,因此请确保您的开发计算机满足相关的硬件和软件要求。
示例代码
-- -------------------- ---- ------- ----- ------------------- - --------------------------------------------------------------------- ---------------------------------------------------- ---------------------- -- - ---------------- ------ ------------ -- ----------------------- -- ------------ -- - --------------------- ---
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066bce967216659e244d0e