Как ввести текст или щелкнуть вне JFrame с помощью Java

#java

Вопрос:

Моя цель: Я пытаюсь создать программу, которая будет регистрировать меня в моих классах масштабирования в нужное время. Я разобрался во всем, кроме попыток открыть zoom, правильно ввести идентификатор и пароль и войти в класс.


Проблема: Нет API, который я мог бы использовать для достижения своей цели. Существует определенный API масштабирования, но он платный, и я несовершеннолетний. Единственный вариант, который, я думаю, остается, — это заставить java щелкнуть и ввести текст в любом месте за пределами JFrame. Я попытался использовать для этого java.awt.Robot, но он может нажимать только на кнопку внутри JFrame. Я попытался наложить две кнопки и сфокусировать окно масштабирования, но Java меняет фокус на JFrame.


Если в Java есть какая-либо другая альтернатива или если есть какая-либо другая внешняя библиотека или API, которые могут быть использованы, пожалуйста, предложите мне то же самое. Заранее спасибо.

Комментарии:

1. Установите будильник на своем компьютере и, когда он сработает, войдите в систему Zoom вручную.

2. в этом-то и проблема. Мне надоело заходить на свой школьный сайт, открывать pdf-файл, копировать идентификатор и бла-бла-бла. Я начал эти проекты, чтобы избавиться от лишних хлопот.

Ответ №1:

Я попытался использовать для этого java.awt.Robot, но он может нажимать только на кнопку внутри JFrame.

Робот может быть использован для генерации события уровня операционной системы.

Если вы хотите, чтобы робот щелкнул сбоку кадра, вам нужно переместить мышь за пределы кадра.

Простой пример:

 public static void main(String[] args) throws Exception
{
    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    frame.setLocation(25, 25);
    frame.setSize(100, 100);
    frame.setVisible(true);

    Robot robot = new Robot();
    robot.delay(2000);
    robot.mouseMove(15, 15 );
    robot.mousePress(InputEvent.BUTTON1_MASK);
    robot.mouseRelease(InputEvent.BUTTON1_MASK);
}
 

Робот нажмет на системное меню окна, расположенного в верхнем/левом углу вашего рабочего стола. Поэтому убедитесь, что у вас развернуто окно.

Ответ №2:

Вы можете использовать WindowListener,#windowDeactivated или WindowFocusListener#windowLostFocus, но вы должны быть осторожны с собственными JDialog (как и в любом случае с FocusListener).

Комментарии:

1. Я не совсем ясно понял. Не могли бы вы объяснить, пожалуйста?? Также я хотел добавить текст в текстовое поле окна. Можно ли это сделать с помощью WindowListener?