2014-07-12 45 views
0

當我的程序沒有集中時,我需要聽一個鍵(F5),我發現了在Linux上運行良好的JNativeHook庫。 但現在我在Windows上嘗試我的程序,並且出現此錯誤: juil。 12,2014 3:46:41 PM org.jnativehook GRAVE:hook_thread_proc [68]:SetWindowsHookEx()失敗! (0X7E)java-jnativehook不起作用是由防病毒引起的?

而我只是不能用JNativeHook讀取我的鍵盤。 問題是什麼?這是我的防病毒問題,還是與我的Windows或我的代碼有問題?

在此先感謝。

回答

0

SetWindowsHookEx()函數似乎返回126(0x7E)ERROR_MOD_NOT_FOUND。我從來沒有見過這個錯誤返回,所以你在代碼中發現了一個錯誤,或者它是你係統中的東西(比如防病毒)。 AFAIK,庫本身沒有被標記爲病毒,但我不確定您是否對SetWindowsHookEx函數有某種限制。

您使用的是什麼版本的庫?你能產生所有的控制檯輸出嗎?如果您可以可靠地重現問題,請打開bug report

更新:它可能與issue #43有關係,當前在系統上安裝了太多掛鉤。這是圖書館最後一個主要的已知問題。簡而言之,Microsoft決定從Vista開始以多種方式修改SetWindowsHookEx API,但沒有提供解決該問題的方法。我甚至無法在我的端重複問題來調試問題。我建議您閱讀整個錯誤報告,看看您是否能清楚地瞭解正在發生的事情以及如何重現它。

+0

你好,我看到這個問題,我認爲這是由這個問題引起的,因爲輸出是一樣的。 我發現了另一種方法來讀取我的密鑰,我使用這個C++函數(從windows.h):GetAsyncKeyState,我構建了一個簡單的DLL,我在無限循環(在線程中)調用,以查看是否按下了鍵。 我知道這不是最好的方式,但它的工作,所以它會足夠直到JNativeHook可以修復這個bug :) – user2663781

+0

這個錯誤每次都會發生嗎?我一直無法重現我的任何機器上的錯誤,使其難以調試。 –

+0

是的,每次我在Windows 7上試用我的機器時都會發生這種情況。 – user2663781