Предотвращение кражи значка в системном трее при нажатии
Вопрос
Я пишу приложение на Java, которое помещает значок в системный трей (через SWT ). Когда щелкают по этому значку, я хочу, чтобы он автоматически набирал некоторые клавиши (через ссылку класс Robot ) в любое текстовое поле, находящееся в фокусе в момент нажатия (может быть в любом окне). К сожалению, нажатие на значок на панели задач отвлекает внимание от ранее сфокусированного окна, тем самым скрывая нажатия клавиш.
Есть ли способ заставить текст печататься в ранее сфокусированном окне?
Решение
Вероятно, нет, по крайней мере, не легко. Этот вопрос обсуждался ранее.
Другие советы
Хотя это не может считаться официальным решением, я нашел некоторый успех, выполняя нажатия клавиш ALT + TAB
непосредственно перед выполнением текстовых нажатий клавиш.
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
Как я уже сказал, это далеко не официальное решение, поскольку нельзя полагаться на комбинацию ALT + TAB
как универсальную команду перехода фокуса. Тем не менее, это, кажется, подходит для моей конкретной ситуации.