Electron笔记四:Dll的调用

这篇博客介绍了如何在Electron应用中调用Dll,包括使用ffi-napi替代过时的ffi,处理编码问题,以及调用自定义Dll进行参数传递和返回。作者通过示例展示了调用系统Dll显示消息框,以及创建Delphi编写的x64位Dll进行加法运算,并讨论了Node.js和Dll版本匹配的重要性。
摘要由CSDN通过智能技术生成

本人初学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);

运行看结果

 汉字显示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值