【问题标题】:java-jnativehook doesn't work is it caused by the antivirus?java-jnativehook 不起作用是防病毒软件引起的吗?
【发布时间】:2014-09-03 00:20:25
【问题描述】:

当我的程序没有聚焦时,我需要听一个键 (F5),我发现 JNativeHook 库在 Linux 上运行良好。 但现在我在 Windows 上尝试我的程序,我得到了这个错误: 七月2014 年 12 月 12 日下午 3:46:41 org.jnativehook 坟墓:hook_thread_proc [68]:SetWindowsHookEx() 失败! (0X7E)

而且我只是无法使用 JNativeHook 读取我的键盘。 问题是什么 ?是我的防病毒软件有问题,还是我的 Windows 或我的代码有问题?

提前致谢。

【问题讨论】:

    标签: java logging key


    【解决方案1】:

    SetWindowsHookEx() 函数似乎返回 126 (0x7E) ERROR_MOD_NOT_FOUND。我从未见过该错误返回,因此您要么在代码中发现了错误,要么是您的系统存在问题(如防病毒软件)。 AFAIK,库本身没有被标记为病毒,但我不确定你是否对 SetWindowsHookEx 函数有某种限制。

    您使用的是什么版本的库?你能产生所有的控制台输出吗?如果您可以可靠地重现该问题,请打开bug report

    更新:这可能与issue #43 系统上当前安装的挂钩过多有关。这是库中最后一个已知的主要问题;简而言之,微软决定从 Vista 开始以多种方式修改 SetWindowsHookEx API,但没有提供解决该问题的方法。我什至无法复制问题来调试问题。我建议您阅读整个错误报告,看看您是否可以准确了解正在发生的事情以及如何重现它。

    【讨论】:

    • 你好,我看到了这个问题,我认为是这个问题引起的,因为输出是一样的。我找到了另一种读取密钥的方法,我使用了这个 C++ 函数(来自 windows.h):GetAsyncKeyState,我构建了一个简单的 DLL,我在无限循环中(在线程中)调用它来查看是否按下了键。我知道这不是最好的方法,但它正在工作,所以在 JNativeHook 可以修复错误之前就足够了 :)
    • 您是否每次都会遇到此错误?我无法在我的任何机器上重现该错误,使其难以调试。
    • 是的,每次我在装有 Windows 7 的机器上尝试时都会发生这种情况
    • 请发邮件给我,我可以给你发一些测试代码,让我知道你用的是什么杀毒软件。
    • 我实际上在度假,所以我无法在八月测试它:/
    猜你喜欢
    • 2011-02-04
    • 2013-05-08
    • 2012-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多