我可以在电子应用程序中使用两个ioHook事件吗?

时间:2019-05-08 16:59:03

标签: javascript node.js electron eventemitter

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

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

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实例的特定列表器吗?

感谢您的帮助。这让我烦了几个小时。

1 个答案:

答案 0 :(得分:0)

没有第一个和第二个,只有一个钩子对象。 CommonJS模块只计算一次,因此ioHook === ioHook2

start开始监听已注册的钩子,stop停止监听它们。

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

ioHook.on('mouseclick', onMouseActivity);

...

ioHook.off('mouseclick', onMouseActivity);