无法在jnativehook-2.1.0.jar中禁用NativeMouseListener求助
问题解决说明
重要提醒
未经允许监视他人的键盘、鼠标操作属于侵犯隐私权的违法行为,严重违反道德准则与法律规定,会承担相应法律责任,请立即停止此类行为。
技术问题原因与解决方案
问题根源
- 你调用
removeNativeMouseListener(new Main())等操作完全无效——每次new Main()都是全新的实例,这些实例从未被添加到GlobalScreen中,自然无法移除任何已注册的监听器。 - 控制台出现的鼠标相关内容并非你的代码输出,而是jnativehook框架默认的日志输出。
修复后的代码
package main; import org.jnativehook.GlobalScreen; import org.jnativehook.NativeHookException; import org.jnativehook.keyboard.NativeKeyEvent; import org.jnativehook.keyboard.NativeKeyListener; import java.util.logging.Level; import java.util.logging.Logger; public class Main implements NativeKeyListener { public static void main(String[] args) throws NativeHookException { // 禁用jnativehook默认日志,避免输出鼠标事件相关日志 Logger logger = Logger.getLogger(GlobalScreen.class.getPackage().getName()); logger.setLevel(Level.OFF); logger.setUseParentHandlers(false); GlobalScreen.registerNativeHook(); GlobalScreen.addNativeKeyListener(new Main()); } @Override public void nativeKeyPressed(NativeKeyEvent e) { System.out.println(NativeKeyEvent.getKeyText(e.getKeyCode())); } @Override public void nativeKeyReleased(NativeKeyEvent e) { System.out.println(NativeKeyEvent.getKeyText(e.getKeyCode())); } @Override public void nativeKeyTyped(NativeKeyEvent e) { System.out.println(NativeKeyEvent.getKeyText(e.getKeyCode())); } }
修复说明
- 移除Main类对所有鼠标监听器接口的实现,只保留
NativeKeyListener,确保代码只处理键盘事件。 - 添加日志禁用逻辑,关闭jnativehook的默认日志输出,解决控制台出现鼠标相关内容的问题。
内容的提问来源于stack exchange,提问作者Autistic Chili Dog
相关产品推荐
相关产品推荐

