79 lines
2.3 KiB
Java
79 lines
2.3 KiB
Java
package main;
|
|
|
|
import java.awt.*;
|
|
import java.awt.event.InputEvent;
|
|
import java.awt.event.KeyEvent;
|
|
import java.awt.image.BufferedImage;
|
|
|
|
/**
|
|
* Ðàáîòà ñ êëàññîì Robot.
|
|
* @author aNNiMON
|
|
*/
|
|
public class RobotUtils {
|
|
|
|
private static final int CLICK_DELAY = 300;
|
|
private Robot robot;
|
|
|
|
/**
|
|
* Êîíñòðóêòîð
|
|
* @throws AWTException îøèáêà èíèöèàëèçàöèè Robot
|
|
*/
|
|
public RobotUtils() throws AWTException {
|
|
robot = new Robot();
|
|
}
|
|
|
|
/**
|
|
* Êëèêíóòü â íóæíóþ òî÷êó
|
|
* @param click òî÷êà ïî êîòîðîé íóæíî êëèêíóòü
|
|
*/
|
|
public void clickPoint(Point click) {
|
|
robot.mouseMove(click.x, click.y);
|
|
robot.mousePress(InputEvent.BUTTON1_MASK);
|
|
robot.delay(CLICK_DELAY);
|
|
robot.mouseRelease(InputEvent.BUTTON1_MASK);
|
|
}
|
|
|
|
/**
|
|
* Àâòîìàòè÷åñêè âîñïðîèçâåñòè çàäàííóþ ïîñëåäîâàòåëüíîñòü íàæàòèé
|
|
* @param buttons êîîðäèíàòû òî÷åê, êóäà ñëåäóåò íàæèìàòü
|
|
* @param result ïîñëåäîâàòåëüíîñòü id äëÿ óêàçàíèÿ íà íóæíóþ êíîïêó
|
|
*/
|
|
public void autoClick(Point[] buttons, byte[] result) {
|
|
for (int i = 0; i < result.length; i++) {
|
|
clickPoint(buttons[result[i]]);
|
|
}
|
|
}
|
|
/**
|
|
* Àâòîìàòè÷åñêîå íàïèñàíèå ñîîáùåíèÿ
|
|
* @param text "ïå÷àòàåìûé" òåêñò
|
|
*/
|
|
public void writeMessage(String text) {
|
|
for (char symbol : text.toCharArray()) {
|
|
boolean needShiftPress = Character.isUpperCase(symbol) && Character.isLetter(symbol);
|
|
if(needShiftPress) {
|
|
robot.keyPress(KeyEvent.VK_SHIFT);
|
|
}
|
|
int event = KeyEvent.getExtendedKeyCodeForChar(symbol);
|
|
try {
|
|
robot.keyPress(event);
|
|
} catch (Exception e) {}
|
|
if(needShiftPress) {
|
|
robot.keyRelease(KeyEvent.VK_SHIFT);
|
|
}
|
|
}
|
|
}
|
|
|
|
/*
|
|
* Ïîëó÷åíèå êàðòèíêè ðàçìåðîì [width x height] ñ ýêðàíà ñ ïîçèöèè [x, y]
|
|
* Åñëè width èëè height ðàâíû -1, òî âîçâðàùàåì âåñü ýêðàí.
|
|
*/
|
|
public BufferedImage getImage(int x, int y, int width, int height) {
|
|
Rectangle area;
|
|
if ((width == -1) || (height == -1)) {
|
|
area = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
|
|
} else area = new Rectangle(x, y, width, height);
|
|
return robot.createScreenCapture(area);
|
|
}
|
|
|
|
}
|