Angular、electron、typescript 和 robotjs

Angular, electron, typescript and robotjs

我正在尝试将 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:看来我是在尝试使用依赖 angular(渲染进程)中的节点(主进程)的 robotjs。当我将我试图用 robotjs 做的事情从 angular 组件移动到 main.ts,即通过电子 运行 时,它起作用了。我会尝试从 angular 中找到使用它的方法,我想是进程间通信之类的,因为我现在找不到任何其他方法。 仍在等待想法,因为我现在有点一头雾水。 谢谢!

好的,明白了。 基本上你不能直接从 Angular 访问 Electron 的 Node.js API。 为此,您需要一个名为 ngx-electron 的很棒的工具。阅读它 here 或只是 Google 它。 安装此工具后,您可以按照大多数指南的指示直接对它的服务进行 DI,然后使用 Electron remote 访问 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);
}

可能不是最好的解决方案,但以我目前对这些技术的有限了解,这将是必须的。 不过我愿意听取意见。

谢谢你的时间,祝你玩得开心!