本人初学Electron,把学习的过程记录了下来,以免以后忘记:
Electron笔记一:安装
Electron笔记二:http与websock的实现
Electron笔记三:调用外部程序(子进程管理)
Electron笔记四:Dll的调用
Electron笔记五:无需控件,HTML5直接播放rtsp(摄像头)
Electron笔记六:打包成可执行程序(.exe)
本打算用ffi 实现这个功能,但是一直安装不成功,查了一下,网上说ffi好几年没有更新了,基本上node新版都安不了,可以使用ffi-napi替代,ffi-napi是作者(node-ffi-napi)根据node-ffi修改而发布到npm仓库的, 可以直接通过npm安装, 支持node.js 12和electron高版本.
安装 ffi-nap之前要确定安装了编译器,安装了的话请忽略,如果没安装请先在cmd中, 执行指令:
npm install -g windows-build-tools
安装ffi-napi(局部安装)
npm install ffi-napi --save
查看安装好的文件:
ref 与 ref-struct 都安装好了,如果想传数组参数,还得安装ref-array
npm install ref-array-di --save
1.现在我们来实现调用windows系统Dll中的消息对话框messagebox,本机是x64.因此定义MessageBoxW
const ffi = require('ffi-napi');
function showText(text) {
return new Buffer(text, 'ucs2').toString('binary');
};
// 通过ffi加载user32.dll
const myUser32 = new ffi.Library('user32', {
'MessageBoxW': // 声明这个dll中的一个函数
[
'int32', ['int32', 'string', 'string', 'int32'], // 用json的格式罗列其返回类型和参数类型
],
});
// 调用user32.dll中的MessageBoxW()函数, 弹出一个对话框
myUser32.MessageBoxW(0, showText('my windows Dll 我的Dll调用!'), showText('我的Dll提示框'), 0);
运行看结果
汉字显示