Como capturar teclado mesmo sem a janela estar em foco?

Como eu capturo um keyEvent sem a janela estar em foco?

Em sistemas de janelas, o foco ou seja, a janela ativa é o principal meio para que o sistema saiba o que fazer. Acredito que isso não exista!

Mas por exemplo, alguns programas, como o fraps, ficam na bandeja e continuam reconhecendo atalhos. Eu estou fazendo um auto clicker, e é muito conveniente ter que clicar sobre a janela para utilizar os atalhos.

Eu baixei o programa e fiz um teste, foi o que eu disse na última resposta quem está com o foco executa comando, ou seja, se eu tenho 2 programas sendo executado o que está em foco é quem faz as operações.

A lógica básica é essa, prioridade do foco.

Isso é uma tarefa um tanto difícil, na realidade, para conseguir algo assim seria necessário ter uma melhor integração com o sistema operacional em execução, e Java não é a melhor solução pra isto.

É mais fácil você terceirizar este processo para algum programa feito em C ou Python, este primeiro tem mais integração com o Windows, mas como você faria isso eu desconheço - não domino C - no entanto certamente este é o caminho mais viável.

1 curtida

JJaeger, muito obrigado. Estou pensando em começar a estudar c++. Esse também resolveria o problema? E mais uma coisa, como eu utilizaria isso em meu programa java? Seria como abrir um outro programa para executar a tarefa, certo? Como eu abro um programa externo por meio de Java?

Dragoon, obrigado pela resposta. Eu conheço a prioridade do foco, etc. Mas ás vezes é incomodo ter que colocar o programa em foco para usar um atalho. Tentarei estudar linguagens de baixo nível, como c ou c++, para descobrir alguma forma. Muito obrigado.

1 curtida

Cara, nesse caso você vai ter que começar dando uma estuda em JNI

Tendo domínio da linguagem externa você pode utiliza-la como uma API em seu programa Java com auxilio do JNI, algo assim.

Eu achei este artigo na Caelum dando um exemplo de implementação:

Vou ficar te devendo um pouquinho, nunca mexi com isso ainda.

Muitíssimo obrigado.