前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Electron中的键盘鼠标操作(Windows环境下)

Electron中的键盘鼠标操作(Windows环境下)

作者头像
码客说
发布2019-10-22 17:40:07
4.7K2
发布2019-10-22 17:40:07
举报
文章被收录于专栏:码客码客

官网

ROBOTJS官网: https://robotjs.io/docs/ ROBOTJS源码: https://github.com/octalmage/robotjs NodeJS地址:https://nodejs.org/en/download/ Electron版本: https://electronjs.org/releases/stable

环境设置

Node版本不要用最新版本 用v10.16.3即可

安装cnpm

代码语言:javascript
复制
npm install -g cnpm --registry=https://registry.npm.taobao.org

或者更新npm的包镜像源

代码语言:javascript
复制
sudo npm config set registry https://registry.npm.taobao.org
sudo npm config list

还原默认配置

代码语言:javascript
复制
sudo npm config set registry https://registry.npmjs.org

注意:要用管理员身份运行CMD

代码语言:javascript
复制
npm install -g --production windows-build-tools
npm install -g node-gyp

如果windows-build-tools删除下面的文件夹(根据自己系统的情况查找)

代码语言:javascript
复制
C:\Users\Jian\AppData\Roaming\npm\node_modules\windows-build-tools

重新安装

设置python路径

代码语言:javascript
复制
npm config set python C:\Users\Jian\.windows-build-tools\python27\python.exe

构建

添加robotjs依赖为Git仓库

代码语言:javascript
复制
"dependencies": {
    "robotjs": "git+https://github.com/octalmage/robotjs.git"
}

安装依赖

代码语言:javascript
复制
npm install

打开项目下的node_modules下的`_robotjs@0.5.1@robotjs`文件夹

如果没有生成/build/Release/robotjs.node 就执行下面的操作

下载依赖

代码语言:javascript
复制
cnpm install

编译

代码语言:javascript
复制
node-gyp rebuild --python C:\Users\Jian\.windows-build-tools\python27\python.exe

构建的robotjs.node的Node版本如果和Electron中的Node版本不一样的话就需要执行下面的rebuild操作

查看系统的Node版本

代码语言:javascript
复制
node -v

获取Electron内部的node版本

在代码中打印信息

代码语言:javascript
复制
console.info(process.versions);

结果如下

代码语言:javascript
复制
ares: "1.15.0"
brotli: "1.0.7"
chrome: "76.0.3809.146"
electron: "6.0.12"
http_parser: "2.8.0"
icu: "64.2"
llhttp: "1.1.3"
modules: "73"
napi: "4"
nghttp2: "1.38.0"
node: "12.4.0"
openssl: "1.1.0"
unicode: "12.1"
uv: "1.29.1"
v8: "7.6.303.31-electron.0"
zlib: "1.2.11"

在Electron中使用需要重新构建

代码语言:javascript
复制
npm rebuild --runtime=electron --target=1.1.3 --disturl=https://atom.io/download/atom-shell --abi=48

其中的

Target should be the Electron version, and abi should be the abi version of the included Node.

所以

代码语言:javascript
复制
electron: "6.0.12"

推断出

代码语言:javascript
复制
--target=6.0.12

node和abi的对应关系:参见

但是

代码语言:javascript
复制
node: "12.4.0"

并没有在对应表里

代码语言:javascript
复制
{
  "10.15.3": {
    "node_abi": 64,
    "v8": "6.8"
  },
  "11.0.0": {
    "node_abi": 67,
    "v8": "7.0"
  },
  "11.1.0": {
    "node_abi": 67,
    "v8": "7.0"
  },
  "11.2.0": {
    "node_abi": 67,
    "v8": "7.0"
  },
  "11.3.0": {
    "node_abi": 67,
    "v8": "7.0"
  },
  "11.4.0": {
    "node_abi": 67,
    "v8": "7.0"
  },
  "11.5.0": {
    "node_abi": 67,
    "v8": "7.0"
  },
  "11.6.0": {
    "node_abi": 67,
    "v8": "7.0"
  },
  "11.7.0": {
    "node_abi": 67,
    "v8": "7.0"
  },
  "11.8.0": {
    "node_abi": 67,
    "v8": "7.0"
  },
  "11.9.0": {
    "node_abi": 67,
    "v8": "7.0"
  },
  "11.10.0": {
    "node_abi": 67,
    "v8": "7.0"
  },
  "11.10.1": {
    "node_abi": 67,
    "v8": "7.0"
  },
  "11.11.0": {
    "node_abi": 67,
    "v8": "7.0"
  },
  "11.12.0": {
    "node_abi": 67,
    "v8": "7.0"
  },
  "11.13.0": {
    "node_abi": 67,
    "v8": "7.0"
  },
  "11.14.0": {
    "node_abi": 67,
    "v8": "7.0"
  },
  "12.0.0": {
    "node_abi": 72,
    "v8": "7.4"
  }
}

但是我们发现每一个大的node版本对应的node_abi的版本都是一样的

所以

代码语言:javascript
复制
--abi=72

整体的命令就是

代码语言:javascript
复制
npm rebuild --runtime=electron --target=6.0.12 --disturl=https://atom.io/download/atom-shell --abi=72

当然也可以配置到 package.json

代码语言:javascript
复制
"rebuild": "npm rebuild --runtime=electron --target=6.0.12 --disturl=https://atom.io/download/atom-shell --abi=72"

至此 RobotJS就能正常使用了

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-10-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 官网
  • 环境设置
  • 构建
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档