JNativeHook来自同一动作的多个响应(鼠标单击,键类型和鼠标滚动)

时间:2013-02-09 11:51:13

标签: java multithreading hook system-calls

我正在使用JNativeHook来检索有关用户活跃程度的信息,但我遇到的问题是,我会从单个操作获得多个响应,但它不一致。它在1,2或3个响应之间变化,但从不超过3个,我将不得不多次运行和退出程序以获得不同的结果。在我发现问题再次出现之前,它似乎可以工作一整天。

我还遇到了一个问题,我必须重新启动计算机才能从某个动作中获得某种响应。

从程序中打印出一个示例:

鼠标按下:1
鼠标按下:1
鼠标按下:1
鼠标发布:1
鼠标点击:3
鼠标发布:1
鼠标点击:3
鼠标发布:1
鼠标点击:3

我使用3个类,每个类一个:鼠标监听器,键盘监听器和鼠标滚轮监听器。我创建了每个这样的线程,让它们同时运行。

有4个主要类处理有问题的代码:

  1. Class that contains the threads
  2. Keyboard listener
  3. Mouse Listener
  4. Mouse Wheel Listener.
  5. (我发布了很多代码,几乎让帖子变得不可读,所以我希望可以这样做吗?)

    我是使用JNativeHook的新手,我不确定它是否可能创建同一个全局侦听器的多个对象或并发问题。

2 个答案:

答案 0 :(得分:2)

对于未来的读者,如果您发现JnativeHook在there报告任何错误,请与SOF有任何相关内容。

更新现在2016年,lib已移至Github

答案 1 :(得分:0)

'Glocal GlobalScreen.registerHook方法在多个类文件中执行,这意味着正在注册多个挂钩并导致错误行为。