1

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

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 来自角度(渲染进程)。当我将我试图用robotjs 做的事情从角度组件移到由电子运行的main.ts 时,它起作用了。我会尝试找到一种从角度使用它的方法,我猜是进程间通信之类的,因为我现在找不到任何其他方法。仍在等待想法,因为我现在有点不知所措。谢谢!

4

1 回答 1

1

好的,想通了。基本上你不能直接从 Angular 访问 Electron 的 Node.js API。为此,您需要一个很棒的工具,称为ngx-electron. 在这里阅读或只是谷歌它。安装此工具后,您可以按照大多数指南的指示直接 DI 其服务,然后使用 Electronremote访问robotjs. 基本上是这样的:

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);
}

可能不是最好的解决方案,但以我目前对这些技术的有限了解,这将不得不做。我对意见持开放态度。

感谢您的时间,有一个美好的!

于 2019-01-27T21:26:21.133 回答