Evite que el icono de la bandeja del sistema robe el foco al hacer clic
Pregunta
Estoy escribiendo una aplicación en Java que coloca un icono en la bandeja del sistema (a través de SWT ) Cuando se hace clic en este icono, deseo que escriba automáticamente algunas teclas (a través de clase Robot ) en cualquier campo de texto que esté enfocado al momento de hacer clic (podría estar en cualquier ventana). Desafortunadamente, al hacer clic en el ícono de la bandeja del sistema, el foco se aleja de la ventana previamente enfocada, robando así las pulsaciones de teclas.
¿Hay alguna manera de hacer que el texto se escriba en la ventana previamente enfocada?
Solución
Probablemente no, al menos no fácilmente. Este problema se ha discutido antes.
Otros consejos
Aunque no puede considerarse una solución oficial, he encontrado cierto éxito al emitir pulsaciones de teclas ALT + TAB
inmediatamente antes de emitir las pulsaciones de teclas textuales.
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_ALT);
robot.keyPress(KeyEvent.VK_TAB);
robot.keyRelease(KeyEvent.VK_ALT);
robot.keyRelease(KeyEvent.VK_TAB);
// ... The keyPress/keyRelease pairs for the actual characters now begin
Como dije, esto está lejos de ser una solución oficial, ya que no se puede confiar en que la combinación ALT + TAB
sea un comando de transición de enfoque universal. Sin embargo, parece ajustarse al proyecto de ley para mi situación particular.