IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 【开发心得】electron iohook集成使用方案 -> 正文阅读

[JavaScript知识库]【开发心得】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 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
? ? }
? })

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-10-22 21:06:34  更:2022-10-22 21:09:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 18:29:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码