首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角度,电子,打字和机器人

角度,电子,打字和机器人
EN

Stack Overflow用户
提问于 2019-01-27 20:44:01
回答 1查看 638关注 0票数 1

我正在尝试与Electron和RobotJS一起使用Typescript。我是所有这些技术的初学者,所以我对幕后发生的事情缺乏深入的理解,所以我无法真正将这个问题联系起来。电子和我的应用运行得很好,一切都编译好了,但是RobotJS不能工作。我得到的错误如下:

代码语言:javascript
复制
ERROR in ./node_modules/robotjs/build/Release/robotjs.node 1:0
Module parse failed: Unexpected character '�' (1:0)
You may need an appropriate loader to handle this file type.
(Source code omitted for this binary file)

我试着为Electron重建RobotJS,但它仍然不能工作。这是一个本机节点模块吗?我不确定,如果真的是这样的话,我得先读一读它,弄清楚我要用它做什么。

这是可以实现的吗?谢谢,祝你有愉快的一天!

LE:看起来我是在尝试使用robotjs,它依赖于angular (渲染进程)中的节点(主进程)。当我将我试图用robotjs做的事情从角度组件转移到由电子运行的main.ts时,它成功了。我会尝试从angular中找到使用它的方法,我猜是进程间通信或其他什么,因为我现在找不到任何其他方法。因为我现在有点摸不着头脑,所以我还在等待点子。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-28 05:26:21

好了,我想通了。基本上,你不能直接从Angular访问Electron的Node.js应用程序接口。为此,您需要一个名为ngx-electron的出色工具。阅读关于它的here或只是谷歌它。安装此工具后,您可以按照大多数指南的指导,直接使用DI服务,然后使用Electron remote访问robotjs。基本上是这样的:

代码语言:javascript
复制
const robot = this._electronService.remote.require('robotjs');
// The example supplied by robotjs
robot.setMouseDelay(2);

const twoPI = Math.PI * 2.0;
const screenSize = robot.getScreenSize();
const height = (screenSize.height / 2) - 10;
const width = screenSize.width;

for (let x = 0; x < width; x++) {
  const y = height * Math.sin((twoPI * x) / width) + height;
  robot.moveMouse(x, y);
}

可能不是最好的解决方案,但以我目前对这些技术的了解有限,这将不得不这样做。尽管如此,我还是乐于听取意见。

感谢您的宝贵时间,祝您愉快!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54388226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档