Preciso fazer uma automação em java, que fique pesquisando dados em um programa, enquanto faço outras atividades de forma simultânea. Isso é possível? Fiz teste com Robot, mas o teclado fica indisponível durante a execução. Há alguma forma de fazer em segundo plano?
Se for uma aplicação Web, você pode usar o Selenium com Java e executar o browser no modo “headless”, isto é, sem interface gráfica de usuário
Ok. Muito obrigado pela resposta. A parte com Selenium na web já estou fazendo. Mas existe alguma forma semelhante para aplicações em desktop?
Olá! Sim, existe uma forma de deixar uma automação em segundo plano sem bloquear o teclado e o mouse. Em vez de usar a classe Robot
, que realmente captura o controle do teclado e mouse, você pode tentar outras abordagens como multithreading ou usar bibliotecas específicas para interações com janelas e aplicações em segundo plano. Por exemplo, você pode utilizar a biblioteca java.awt.event.InputEvent
para simular eventos de teclado e mouse em um nível mais controlado, sem interferir nas suas atividades. Além disso, dá para integrar com APIs externas ou usar frameworks de automação como Selenium, dependendo da tarefa. Já tentou essas alternativas?
Pelo que entendi da sua questão, você tem um programa em background e ele deve digitar em um segundo programa desktop e o teclado ficar livre para o programa em foco.
Isso deve ser feito usando api de baixo nível que intercepte os eventos do teclado mas que tambem coloque na fila, e que obtenha as janelas abertas e interaja.
Em Windows usando api nativa tente SetWindowsHookEx para capturar eventos de teclado e SendInput para emular teclas. Isso permite que seu programa capture e emule teclas em segundo plano enquanto o teclado físico continua disponível para outros programas.
Em Linux tente /dev/input/eventX para capturar teclas e use uinput para criar um dispositivo de entrada virtual para emulação de teclas
Em Mac precisa pesquisar por LowLevelKeyboardProc
É possivel sim fazer isso em C ou assembly ou ainda em qualquer linguagem de baixo nivel em parceria com o sistema operacional.
Agora, caso voce esteja querendo fazer raspagem em sites de internet, tenho uma solução bem mais simples.
vc pode criar uma maquina virtual leve de 2 gb ram e colocar o programa e a aplicação de automação lá. Assim vc não precisará usar um mause ou teclado virtual e ficar se preocupando com multiplos teclados e mause interagindo entre si.