高版本electron使用iohook失败(使用uiohook-napi替代)

需求: 想在客户端electron应用中实现划词功能(监听系统级别选中文本,出现快捷菜单)

难点:监听鼠标事件,选中文本的内容和位置。

思路:iohook用于获取系统级别的选中文本,但是该插件已经很久没有维护了,仅支持低版本的electron。我的项目使用的electron的版本是20+,经过多次尝试后发现了一个替代版插件:uiohook-napi。该插件可监听键盘事件、鼠标事件。

使用node-selectron插件可获取选中文本,但是权限有限,并非能获取所有应用的内容,浏览器可以获取,待发掘更合适的插件。

javascript 复制代码
const { uIOhook } = require('uiohook-napi') // 监听鼠标
const { getSelection } = require('node-selection') // 获取鼠标选中文本内容

uIOhook.on('mouseup', async e => {
    try {
      console.log('mouseup-e', e) // e.x,.e.y,e.button
      const { text, process } = await getSelection()
    } catch (error) {
      console.error('getSelectrion-error', error)
    }
}
相关推荐
小old弟1 分钟前
🤔同时发送100个请求?!手撕,并发请求⌨️
前端
533_5 分钟前
[echarts] 更新数据
前端·javascript·echarts
excel6 分钟前
理解 JavaScript 中的迭代器协议与中断行为:for...of vs for...in
前端
幻雨様8 分钟前
UE5多人MOBA+GAS 番外篇:同时造成多种类型伤害,以各种属性值的百分比来应用伤害(版本二)
java·前端·ue5
讨厌吃蛋黄酥12 分钟前
利用Mock实现前后端联调的解决方案
前端·javascript·后端
zzywxc78734 分钟前
在处理大数据列表渲染时,React 虚拟列表是提升性能的关键技术,但在实际实现中常遇到渲染抖动和滚动定位偏移等问题。
前端·javascript·人工智能·深度学习·react.js·重构·ecmascript
Hello.Reader1 小时前
Rust → WebAssembly 的性能剖析全指南
前端·rust·wasm
前端小巷子1 小时前
Vue 2 Diff 算法
前端·vue.js·面试
奕辰杰5 小时前
关于npm前端项目编译时栈溢出 Maximum call stack size exceeded的处理方案
前端·npm·node.js
JiaLin_Denny7 小时前
如何在NPM上发布自己的React组件(包)
前端·react.js·npm·npm包·npm发布组件·npm发布包