electron中引入iohook来监听系统级鼠标键盘事件

最新做法:(2022-07-14记录)

npm install iohook@latest--save

安装好之后

直接使用会报错,这时候发现是缺少一些关于electron的编译,从以下地址选择对应系统的编译包手动放进去即可

Releases · wilix-team/iohook · GitHub

iohook官网:Usage | iohook

https://nodejs.ctolib.com/article/releases/98298

本人项目的版本号:electron5.0.0 node 12.16.1

一、准备工作

使用node-abi来获取electron和node对应的abi版本

npm install node-abi --save-dev
console.log(nodeAbi.getAbi('12.16.1','node'))// 68
    console.log(nodeAbi.getAbi('5.0.0','electron'))// 70
    console.log(nodeAbi.getTarget('68','node'))// 12.0.0
    console.log(nodeAbi.getTarget('70','electron'))//5.0.0

在使用中发现68的版本并不可以,因此使用了72

二、electron中安装iohook

npm install iohook@0.6.5 --save-dev

在package.json中配置一些内容

"iohook": {
    "targets": [
      "node-72",
      "electron-70"
    ],
    "platforms": [
      "win32",
      "darwin",
      "linux"
    ],
    "arches": [
      "x64",
      "ia32"
    ]
  }

重新编译的写法:

"rebuildnew": "npm rebuild --runtime=electron --target=5.0.0 --disturl=https://atom.io/download/atom-shell --abi=70"

三、iohook的使用

const ioHook = require('iohook');

    ioHook.start(false);
    const eventHandler =function(type){
        switch (type) {
            case 'mouseclick':
                console.log('mouse is click!')
                break;
            case 'mousedown':
                console.log('mouse is press!')
                break;
            case 'mouseup':
                console.log('mouse is release!')
                break;
            case 'mousedrag':
                console.log('mouse is moving!')
                break;
            case 'mousedrag':
                console.log('mouse is moving!')
                break;
            case 'mousewheel':
                console.log('keybord is rolling!')
                break;
            case 'keydown':
                console.log('keybord is press!')
                break;
            default:
                console.log('move mouse or keyboard try it!')
                break;
        }
    }
    ioHook.start(false);
    ioHook.on('mouseclick', ()=>{eventHandler('mouseclick')});
    ioHook.on('mousedown', ()=>{eventHandler('mousedown')});
    ioHook.on('mouseup', ()=>{eventHandler('mouseup')});
    ioHook.on('mousedrag', ()=>{eventHandler('mousedrag')});
    ioHook.on('mousewheel', ()=>{eventHandler('mousewheel')});
    ioHook.on('mouse', ()=>{eventHandler('mousedrag')});
    ioHook.on('keyup', ()=>{eventHandler('keyup')});
    ioHook.on('keydown', ()=>{eventHandler('keydown')});



app.on('before-quit', () => {
    // 卸载iohook监听
    ioHook.unload();
    ioHook.stop();
});

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 14
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值