我正在使用iohook Node 库来监听全局的鼠标和键盘事件。

实际上,我需要两个库实例来处理一些逻辑问题。
现在我的代码看起来像这样

const ioHook = require('iohook');
const ioHook2 = require('iohook');
ioHook.start();
ioHook.on('mouseclick', this.onMouseActivity);
ioHook2.start();
ioHook2.on('mouseclick', this.onMouseActivity2);

现在,执行完一些逻辑后,我需要停止第一个监听器。
因此,我执行以下代码,
ioHook2.stop();

但是,这停止了我所有的勾当。
我的预期结果是第一个ioHook不应该关闭并正常工作。

这是因为两者使用的事件发射器相同吗?
mouseclickkeypressmousemove等。

如果是这样,我可以删除特定于ioHook实例的特定列表器吗?

谢谢您的帮助。这困扰了我好几个小时。

最佳答案

没有第一个和第二个,只有一个钩子(Hook)对象。 CommonJS模块只评估一次,所以ioHook === ioHook2
start开始监听已注册的钩子(Hook),而stop停止监听它们。

由于iohook是事件发射器,因此可以在需要时与其他任何事件发射器一样取消订阅监听器:

ioHook.on('mouseclick', onMouseActivity);

...

ioHook.off('mouseclick', onMouseActivity);

关于javascript - 我可以在 Electron 应用程序中使用两个ioHook事件吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56045673/

10-15 02:04