前言: 最近在研究门锁刷卡,用electron写了个客户端,需要读取全局的键盘输入。百度搜到的帖子都不是很完全,或者只言片语,这里稍微完整的写一下。

集成示例gitee:

electron-iohook-demo: electron集成iohook

环境:

Windows11

Nodejs v12.16.1

Electron v20.2.0

资料检索方案:

Google 搜索 electron iohook 得到youtube的教程,感谢该up主。

https://www.youtube.com/watch?v=6o9xybTYlLU

实践步骤:

1. 快速创建一个Electron项目(2022/10/15) 得出的版本是21.1.x 对应的内部版本是109了。

官网: Electron | Build cross-platform desktop apps with JavaScript, HTML, and CSS.

git clone https://github.com/electron/electron-quick-start

npm install

npm start 看一下

2. 安装iohook

官网:  iohook | iohook

npm install iohook --save # or yarn add iohook

配置:

"iohook": {

"targets": [

"node-72",

"electron-87"

],

"platforms": [

"win32",

"darwin",

"linux"

],

"arches": [

"x64",

"ia32"

]

}

使用:

const ioHook = require('iohook');

ioHook.on('mousemove', (event) => {

console.log(event); // { type: 'mousemove', x: 700, y: 400 }

});

// Register and start hook

ioHook.start();

// Alternatively, pass true to start in DEBUG mode.

ioHook.start(true);

// False to disable DEBUG. Cleaner terminal output.

ioHook.start(false);

注意事项1: iohook安装问题,版本确认很重要,再就是网络环境很重要。否则一定会出现not found module iohook, 安装io hook问题

使用node-abi 确定版本

npm install node-abi

node -v 确定node版本

electron -v 确定 electron 版本

写一个version.js 内容如下:

const nodeAbi = require('node-abi');

// console.log(nodeAbi.getAbi('v12.16.1','node'))// 68

// console.log(nodeAbi.getAbi('v20.2.0','electron'))// 70

2. 注意iohook 安装版本,上一个问题是因为版本没对应导致,这个问题往往出现在新版electron 和 nodejs 身上,据说 nodejs 16.x以上版本 和 electron 高版本未编译,github iohook issue 页面有临时解决方案和手动编译方案。或者干脆降级。

报错如下:

Error: GET https://github.com/wilix-team/iohook/releases/download/v0.9.3/iohook-v0.9.3-node-v72-linux-ia32.tar.gz returned 404
Prebuild for current platform (iohook-v0.9.3-node-v72-linux-ia32) not found!
Try to build for your platform manually:
# cd node_modules/iohook;
# npm run build

Downloading prebuild.tar.gz
Error: GET https://github.com/wilix-team/iohook/releases/download/v0.9.3/iohook-v0.9.3-electron-v107-win32-x64.tar.gz returned 404
Prebuild for current platform (iohook-v0.9.3-electron-v107-win32-x64) not found!
Try to build for your platform manually:
# cd node_modules/iohook;
# npm run build

Downloading prebuild.tar.gz
Error: GET https://github.com/wilix-team/iohook/releases/download/v0.9.3/iohook-v0.9.3-electron-v107-win32-ia32.tar.gz returned 404
Prebuild for current platform (iohook-v0.9.3-electron-v107-win32-ia32) not found!
Try to build for your platform manually:
# cd node_modules/iohook;
# npm run build

Downloading prebuild.tar.gz
Error: GET https://github.com/wilix-team/iohook/releases/download/v0.9.3/iohook-v0.9.3-electron-v107-darwin-x64.tar.gz returned 404
Prebuild for current platform (iohook-v0.9.3-electron-v107-darwin-x64) not found!
Try to build for your platform manually:
# cd node_modules/iohook;
# npm run build

Downloading prebuild.tar.gz
Error: GET https://github.com/wilix-team/iohook/releases/download/v0.9.3/iohook-v0.9.3-electron-v107-linux-x64.tar.gz returned 404
Prebuild for current platform (iohook-v0.9.3-electron-v107-linux-x64) not found!
Try to build for your platform manually:
# cd node_modules/iohook;
# npm run build

Downloading prebuild.tar.gz
Error: GET https://github.com/wilix-team/iohook/releases/download/v0.9.3/iohook-v0.9.3-electron-v107-linux-ia32.tar.gz returned 404
Prebuild for current platform (iohook-v0.9.3-electron-v107-linux-ia32) not found!
Try to build for your platform manually:
# cd node_modules/iohook;
# npm run build

可以访问一下: https://github.com/wilix-team/iohook/releases/  看看具体的版本。

可以 去node_modules iohook install.js let downloadurl 看下github的地址拼接。

正确处理electron 版本后下在如下:

调试:(Ctrl+shift+I 打开console): 这里只演示鼠标,键盘也一样,只是事件变成了keydown

 其他可能异常:
 electron Uncaught TypeError: Cannot read property ‘app’ of undefined

解决方案
给主窗口添加 enableRemoteModule 属性,使用 remote 模块:

mainWindow = new BrowserWindow({
    height: 563,
    useContentSize: true,
    width: 1000,
    webPreferences: {
      nodeIntegration: true,
      enableRemoteModule: true
    }
  })

【开发心得】electron iohook集成使用方案相关推荐

  1. 2022年10月deepin 20.7.1 谈谈我们的N卡驱动开发心得

    deepin 20.7.1 即将到来之际,各位小伙伴在参与内测的过程中,有没有发现安装N卡驱动时不同寻常的变化呢? 20.7.1版本可以根据当前你机器的上NVIDIA显卡,自动匹配合适的闭源驱动版本进 ...

  2. UI组件库从1到N开发心得-组件篇

    正文 距离第一篇UI组件库文章发布已经过去3个月了,在此期间利用零零散散的时间持续更新owl-ui组件库,目前owl-ui移动端组件库已经更新3大类(基础.表单.弹出层)9种组件(Button.Tab ...

  3. vue引用electron_如何搞定跨平台桌面开发?Electron助你快速起步

    嗨,我是勾勾.今天要介绍的是 Electron 跨平台桌面应用开发. Electron(https://electronjs.org/)是一个运行平台,它能够让我们通过 HTML + CSS + Ja ...

  4. Android智能硬件开发心得总结(二)

    Android智能硬件开发心得总结(一) 6.关于屏幕显示 每次一个新项目的开发,我所做的第一件事就是确定所选定显示屏的型号规格,然后将规格书发给主板供应商让其先调屏参. 调屏参是很可能会出现无法点亮 ...

  5. Electron屏幕截图的技术方案MacWindows

    导读:Electron比你想象的更简单也比你想象中更强大!如果你可以建一个网站,你就可以建一个桌面应用程序.Electron 是一个使用JavaScript, HTML和CSS等Web技术创建原生程序 ...

  6. MetroMusic音乐播放器开发心得

    MetroMusic音乐播放器开发心得 在这个假期,我独立开发了自己的音乐播放器MetroMusic,之所以叫做MetroMusic,是因为这个播放器的界面采用目前最为流行的win8Metro风格.这 ...

  7. 文档在线编辑开发心得

    一.背景 在本次公司的开发任务中,偶然接触到了畅写office的文档在线编辑集成开发,在开发中遇到点问题,觉得这个东西挺有趣的,写此文章保存开发心得. 二.前期准备 文档在线编辑功能只有一个api.文 ...

  8. AEAI Portlet开发心得

    1 背景概述 Portlet是AEAI Portal组件API,是基于Java的Web组件,由Portlet容器管理,并由容器处理请求,生产动态内容.AEAI Portal中已经预置了许多Portle ...

  9. 游戏开发心得——书籍篇——《游戏引擎框架》-专业工具

    游戏开发心得--书籍篇--<游戏引擎框架>-专业工具 FOR THE SIGMA FOR THE GTINDER FOR THE ROBOMASTER 简介: 学习<游戏引擎框架&g ...

最新文章

  1. 车辆动力学及控制_道路自适应车辆动力学控制研究(127页)【附下载】
  2. CentOS 7安装Keepalived
  3. 弹窗页面交互_UI进阶知识-信息提交类弹窗该如何设计?
  4. 传统ELK分布式日志收集的缺点?
  5. 卷积核_漫画:卷积神经网络中的卷积核到底是什么?
  6. JavaScript 函数定义+内置函数使用+array对象+object类型
  7. 【开源】对基于图像背景的字体生成、人体姿势预测、关键点检测、超分辨率等探讨...
  8. Python+matplotlib一笔绘制红色五角星
  9. Android -- 自动挂断电话
  10. plsql配置相关的问题
  11. android 朋友圈上传图片,微信朋友圈终于可以发图片评论了!
  12. php laypage 开发demo,laypage+laytpl示例
  13. 25 逆波兰表达式、波兰表达式
  14. java中 Object转换成 int 类型。
  15. v-model中修饰符lazy,number, trim的作用
  16. 区分单音节,双音节和多音节
  17. 实验2014062701:opencv对图像的点操作
  18. 读取Java源文件中字段的注释当做Swagger的字段描述
  19. java 读取url获取的xml
  20. 信号与系统--信号以及系统的介绍(一)

热门文章

  1. pms解析--未完待续
  2. 用python完成图形输出设备_使用numpy进行9宫格图像拼接 - Python
  3. Incapsula reese84 分析与破解
  4. 单端通用ISM频段接收器 Si4313
  5. ReactOS研究班
  6. 飞塔(FortiGate)配置IPSec
  7. 如何用Excel做动态图表
  8. 记录:MI 10 反复重启的原因之一
  9. pomodoro命令行计时器
  10. FPGA项目一:1位闪烁灯设计