Могу ли я использовать два события ioHook в своем электронном приложении? - PullRequest
0 голосов
/ 08 мая 2019

Я использую библиотеку узлов 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 не должен закрываться и работать.

Это потому, что источники событий, используемые обоими, одинаковы? как mouseclick, keypress, mousemove и т.д ..?

Если это так, можно ли удалить конкретный список, относящийся к экземпляру ioHook?

Спасибо за помощь. Это беспокоит меня часами.

1 Ответ

0 голосов
/ 08 мая 2019

Нет первого и второго, но есть только один объект крючка.Модули CommonJS оцениваются один раз, поэтому ioHook === ioHook2.

start начинает прослушивание зарегистрированных хуков и stop прекращает их прослушивание.

Поскольку iohook является источником событий, слушатель можетОтписался, как и любой другой источник событий, когда это необходимо:

ioHook.on('mouseclick', onMouseActivity);

...

ioHook.off('mouseclick', onMouseActivity);
...