Как написать ключевой прослушиватель для отслеживания всех нажатий клавиш на Java? [закрыто]

Я хочу написать прослушиватель клавиш в Java. Он должен отслеживать все нажатия клавиш независимо от того, имеет ли приложение Java фокус или нет. Это возможно?

java,keylistener,keylogger,

14

Ответов: 7


11 вниз голос принят

Это возможно, но требует реализации, использующей JNI, который не всегда будет переносимым.

Java System Hook - одна из таких библиотек, которая будет работать с Windows 32 и 64 бит.


Я использовал что-то подобное раньше. Взгляните на Java System Hook .

Он отслеживает глобальные нажатия клавиш (а не только ваше приложение Java) через JNI. Он работал быстро и отлично для меня


KeyListener запускается как поток демона, который не поддерживает приложение. В вашей программе должен быть задействован другой бегущий поток без демона

Например:

GlobalKeyListener globalKeyListener = new GlobalKeyListener();
globalKeyListener.addKeyListener(listener);
while (true) {
    Thread.sleep(1000);
}

3

Нет, Java не имеет доступа к ключевым штрихам за пределами своего активного окна.

Для этого вам нужно будет использовать комбинацию Java и собственного кода, используя JNI для вызова собственного кода. В Microsoft Windows вы должны посмотреть GetAsyncKeyState(key).


3

Это очень возможно, но не используя стандартную Java, вам необходимо взаимодействовать с операционной системой на собственном уровне.

Вот тема для Windows , который использует ЮНА , чтобы получить доступ к SetWindowsHookEx функции в API для Windows user32.


Нет, Java не прослушивает keystokes, если это не активное (сфокусированное) окно, поэтому вы не можете этого сделать.

Java, KeyListener, кейлоггеров,
Похожие вопросы