You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法在jnativehook-2.1.0.jar中禁用NativeMouseListener求助

问题解决说明

重要提醒

未经允许监视他人的键盘、鼠标操作属于侵犯隐私权的违法行为,严重违反道德准则与法律规定,会承担相应法律责任,请立即停止此类行为。

技术问题原因与解决方案

问题根源

  1. 你调用removeNativeMouseListener(new Main())等操作完全无效——每次new Main()都是全新的实例,这些实例从未被添加到GlobalScreen中,自然无法移除任何已注册的监听器。
  2. 控制台出现的鼠标相关内容并非你的代码输出,而是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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 17:06:23