nodejs利用windows API读取文件属性(dll)

本文介绍了如何使用Node.js调用Delphi编写的DLL,进而利用Windows API读取文件属性。主要涉及node-gyp、ffi、ref、iconv-lite等模块的安装与使用,特别提醒在处理包含中文的文件名时需要注意编码问题。
摘要由CSDN通过智能技术生成

nodejs调用delphi编写的dll中,使用了dll调用windows api转读取文件属性,感觉使用nodejs也可直接调用windows api。

此处需用到windows系统的version.dll,该dll位于C:\WINDOWS\System32\下,是一个32位的dll,故此处直接使用32位版本的node。

 

一、安装所需模块(node-gyp、ffi、ref、iconv-lite)

npm install node-gyp -g
npm install ffi -- save
npm install ref --save
npm install iconv-lite --save

其中:node-gyp直接全局安装,ffi、ref、iconv-lite安装在项目中即可

PS:

1. ffi与ref的安装需要用到python,需先装好。

2. ffi用来调用dll

3. ref用来设置buffer

4. iconv-lite用来转码GBK字符

 

二、示例,使用nodejs读取文件属性

 1 const ffi = require('ffi');
 2 const ref = require('ref');
 3 const iconvLite = require('iconv-lite');
 4 
 5 // 定义dll
 6 const version = ffi.Library('C://WINDOWS//System32//version', {
 7     'GetFileVersionInfoSizeA': [ 'int', ['string', 'int'] ],
 8     'GetFileVersionInfoA': ['int', ['string', 'int', 'int', ref.refType(ref.types.char)]],
 9     'VerQueryValueA': ['int', [ref.refType(ref.types.char), 'string', ref.refType(ref.types.CString), ref.refType('int')]]
10 });
11 
12 const Int16Format4 = function (num) {
13     const s = '0000';
14     const f = num.toString(16);
15     return s.substr(0, 4 - f.length) + f;
16 };
17 
18 try {
19     console.log('Begin Test');
20     // 转码,windows使用AnsiChar,利用iconv-lite使用gbk解码
21     const file = iconvLite.encode('C:\\Program Files (x86)\\Tencent\\WeChat\\WeChat.exe', 'gbk');
22 
23     // 获取文件属性大小
24     const size = version.GetFileVersionInfoSizeA(file, 0);
25     console.log('fileInfoSize: ' + size);
26 
27     // 读取文件属性buffer
28     const buf = 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值