Pergunta

Eu tenho procurado por um tempo e todo mundo parece pensar que isso não é possível usando apenas Java, por isso vou dar SO um tiro;)

Existe alguma maneira de ter a minha aplicação Java escutar eventos (eventos-chave, em particular), enquanto outro aplicativo relacionado tem o foco janela? Na minha situação, eu estou olhando para detectar quando o usuário pressionou a tecla 'Pause' no teclado, embora a minha aplicação Java não tem foco.

Já ouvi algumas pessoas mencionar que a única maneira é escrever um código C e utilizar JNI. Apenas curioso se alguém sabia de uma maneira de evitar isso? Ou, se não, pelo menos um muito bom tutorial sobre o c / stuff JNI?

Graças

Foi útil?

Solução

É o meu entendimento de que isso não pode ser feito. Em um nível fundamental, a JVM só gera eventos para o / s eventos que recebe, e só recebe eventos O / S de entrada quando ele tem o foco.

Eu tenho certeza que você poderia usar JNI para acionar o O / S para gerar eventos para todas as entradas, mas que seria muito O / S dependente.

Outras dicas

Aqui é a melhor resposta que eu encontrei:

" Há uma biblioteca para lidar com teclado nativo e controle do mouse: https://github.com/kwhat/jnativehook ) "

Eu não estou ciente de qualquer maneira de contornar isso também. Eu achei este link em fóruns do Java com um bom exemplo de como configurar o material JNI e fazer um manipulador de teclado global (muito a acrescentar aqui). É um pouco datado (2005), mas o exemplo parece bastante completo para você começar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top