Получение ввода с клавиатуры из другого окна - PullRequest
0 голосов
/ 28 октября 2019

Я пытаюсь создать свой собственный автокликер, используя Java и пакет java.awt.Robot, чтобы нажать и отпустить кнопку мыши.

(Первая попытка)

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.InputEvent;
public class Autoclicker {
    public static void main(String[] args) throws AWTException, InterruptedException {
        // TODO Auto-generated method stub
        Robot r = new Robot();
        r.setAutoDelay(0);
        Thread.sleep(15_000); // 15 seconds, to make sure I can move my mouse
        // My program appears to stop my mouse from moving.
        for(int i=0; i<1000; i++){ // Warning: I cannot move my mouse 
            //while the clicker is active. Maybe I shouldn't set the delay to 0.
            r.mousePress(InputEvent.BUTTON1_DOWN_MASK);
            r.mouseRelease(InputEvent.BUTTON1_MASK);
        }
    }
}

Однако кажется, что я не могу найти, когда пользователь вводит ключ из другого окна. (Обратите внимание, что эти окнане мои созданные javax.swing.JFrame s, они могут быть любыми, от google chrome до блокнота.) Я попытался использовать этот автокликер и увидел, что он каким-то образом активировался, когда я нажимал кнопку в google chromeи блокнот;казалось, работает на все, что я использовал его. Автокликер, по-видимому, представлял собой переносимую программу с переносимым методом и решением.

Я посмотрел на java.awt.event.KeyListener, но он требует прямого внимания. Я посмотрел на этот вопрос и увидел, что использовать его для своих целей было безнадежно, так как мне пришлось бы добавить оба к своим окнам, но я не думаю, что смогу надежно редактировать кодкаждой программы, которую я использую, чтобы добавить ее, поэтому я сдался.

Я посмотрел на привязки клавиш . Я мог только найти способы сбора ввода, если он был в том же окне.

java.awt.KeyboardFocusManager меня интересует, в частности # getCurrentKeyboardFocusManager () , но я не могу найти какой-либо способ использовать это.

Вопросы:

  • Как я могу получить ввод с клавиатуры из другого окна, такого как Google Chrome и Блокнот? Существует ли какой-либо платформо-независимый способ?

  • Не верно ли я в своих заявлениях о возможности использования KeyListener, KeyBindings и KeyBoardFocusManager?

...