Подтвердить что ты не робот

Слушатель событий на Java без приложения фокуса? (Глобальное обнаружение нажатия клавиш)

Я искал какое-то время, и все, кажется, думают, что это невозможно, используя только Java, поэтому я дам SO выстрел;)

Есть ли способ заставить приложение Java прослушивать события (в частности, ключевые события), а другое несвязанное приложение имеет фокус окна? В моей ситуации я ищу, чтобы определить, когда пользователь нажал клавишу "Пауза" на клавиатуре, хотя мое приложение Java не имеет фокуса.

Я слышал, что некоторые люди упоминают, что единственный способ - написать код C и использовать JNI. Просто любопытно, знает ли кто-нибудь, как избежать этого? Или, если нет, по крайней мере, действительно хороший учебник по материалам c/JNI?

Спасибо

4b9b3361

Ответ 1

Я понимаю, что этого нельзя сделать. На базовом уровне JVM генерирует только события для событий O/S, которые он получает, и он принимает только входные события O/S, когда он имеет фокус.

Я уверен, что вы можете использовать JNI для запуска O/S для генерации событий для всех входных данных, но это будет очень зависимым от O/S.

Ответ 2

Вот лучший ответ, который я нашел:

" Существует библиотека для управления встроенной клавиатурой и мышью: https://github.com/kwhat/jnativehook) "

Ответ 3

Я тоже не знаю, как обойти это. Я нашел эту ссылку на форумах Java с хорошим примером того, как настроить материал JNI и сделать глобальный обработчик клавиатуры (слишком много для добавления Вот). Это немного датировано (2005), но пример выглядит достаточно тщательно, чтобы вы начали.