【开发心得】electron iohook集成使用方案
前言: 最近在研究门锁刷卡,用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 buildDownloading 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 buildDownloading 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 buildDownloading 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 buildDownloading 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 buildDownloading 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集成使用方案相关推荐
- 2022年10月deepin 20.7.1 谈谈我们的N卡驱动开发心得
deepin 20.7.1 即将到来之际,各位小伙伴在参与内测的过程中,有没有发现安装N卡驱动时不同寻常的变化呢? 20.7.1版本可以根据当前你机器的上NVIDIA显卡,自动匹配合适的闭源驱动版本进 ...
- UI组件库从1到N开发心得-组件篇
正文 距离第一篇UI组件库文章发布已经过去3个月了,在此期间利用零零散散的时间持续更新owl-ui组件库,目前owl-ui移动端组件库已经更新3大类(基础.表单.弹出层)9种组件(Button.Tab ...
- vue引用electron_如何搞定跨平台桌面开发?Electron助你快速起步
嗨,我是勾勾.今天要介绍的是 Electron 跨平台桌面应用开发. Electron(https://electronjs.org/)是一个运行平台,它能够让我们通过 HTML + CSS + Ja ...
- Android智能硬件开发心得总结(二)
Android智能硬件开发心得总结(一) 6.关于屏幕显示 每次一个新项目的开发,我所做的第一件事就是确定所选定显示屏的型号规格,然后将规格书发给主板供应商让其先调屏参. 调屏参是很可能会出现无法点亮 ...
- Electron屏幕截图的技术方案MacWindows
导读:Electron比你想象的更简单也比你想象中更强大!如果你可以建一个网站,你就可以建一个桌面应用程序.Electron 是一个使用JavaScript, HTML和CSS等Web技术创建原生程序 ...
- MetroMusic音乐播放器开发心得
MetroMusic音乐播放器开发心得 在这个假期,我独立开发了自己的音乐播放器MetroMusic,之所以叫做MetroMusic,是因为这个播放器的界面采用目前最为流行的win8Metro风格.这 ...
- 文档在线编辑开发心得
一.背景 在本次公司的开发任务中,偶然接触到了畅写office的文档在线编辑集成开发,在开发中遇到点问题,觉得这个东西挺有趣的,写此文章保存开发心得. 二.前期准备 文档在线编辑功能只有一个api.文 ...
- AEAI Portlet开发心得
1 背景概述 Portlet是AEAI Portal组件API,是基于Java的Web组件,由Portlet容器管理,并由容器处理请求,生产动态内容.AEAI Portal中已经预置了许多Portle ...
- 游戏开发心得——书籍篇——《游戏引擎框架》-专业工具
游戏开发心得--书籍篇--<游戏引擎框架>-专业工具 FOR THE SIGMA FOR THE GTINDER FOR THE ROBOMASTER 简介: 学习<游戏引擎框架&g ...
最新文章
- 车辆动力学及控制_道路自适应车辆动力学控制研究(127页)【附下载】
- CentOS 7安装Keepalived
- 弹窗页面交互_UI进阶知识-信息提交类弹窗该如何设计?
- 传统ELK分布式日志收集的缺点?
- 卷积核_漫画:卷积神经网络中的卷积核到底是什么?
- JavaScript 函数定义+内置函数使用+array对象+object类型
- 【开源】对基于图像背景的字体生成、人体姿势预测、关键点检测、超分辨率等探讨...
- Python+matplotlib一笔绘制红色五角星
- Android -- 自动挂断电话
- plsql配置相关的问题
- android 朋友圈上传图片,微信朋友圈终于可以发图片评论了!
- php laypage 开发demo,laypage+laytpl示例
- 25 逆波兰表达式、波兰表达式
- java中 Object转换成 int 类型。
- v-model中修饰符lazy,number, trim的作用
- 区分单音节,双音节和多音节
- 实验2014062701:opencv对图像的点操作
- 读取Java源文件中字段的注释当做Swagger的字段描述
- java 读取url获取的xml
- 信号与系统--信号以及系统的介绍(一)