目录
- Robot(一)
- 常用API
- 功能演示
Robot(一)
前言
- Robot是属于 java.awt 包下的。
- 关于这个Robot类本人也是在最近看到。
- 感觉挺有意思的于是就我就在平时休息空闲的时候去学了一下这个类的用法。
- 这个类主要是以机器人控制自动化的一个类。
- 是可以用来做脚本的。
- 这篇文章写到的还都是基础所以想了解他更深入的用法推荐去看API文档来了解。
- 如果有小伙伴对Robot类的学习有什么好的资源也可以在评论区分享一下。
- 本人对这个Robot类的用法也只是算基础,不是很深入。但是本人偶尔会去看一看相关的用法,后续不确定多久会在出一篇Robot(二)来分享给大家,感谢大家对我的支持!!!
常用API
将当前的程序(thread)休眠(sleep)若干毫秒(ms)。可以来控制程序的延迟。
void delay(int me)
取得给定屏幕坐标位置的颜色值。
Color getPixelColor(int x, int y)
用来产生指定键的按下与抬起动作,相当于win32 API的 keyb_event 函数,可用于程序的自动演示,测试等。
void keyPress(int keycode)
void keyRelease(int keycode)
将鼠标的光标移到指定的屏幕坐标,可用于程序的自动演示,测试等。
void mouseMove(int x, int y)
下面这三种方法,产生指定鼠标按钮的按下、抬起、及滚轮动作,一样也可用于程序的自动演示、测试等。
void mousePress(int button) // 按下
void mouseRelease(int button) // 抬起
void mouseWheel(int wheelAmt) // 滚轮 输入的值为几,就代表鼠标滚轮滚几下
KeyEvent这个类封装了很多键盘上按键的ASCII码值 对于的调用就是KeyEvent.VK_?
比如A:KeyEvent.VK_A
keyEvent封装的ASCII码里字母都是用大写字母的ASCII值。
---------------------------------------------------------------------
InputEvent封装了鼠标的ASCII码,同理用法也是差不多的。
比如:InputEvent.BUTTON1_MASK 左键
功能演示
按钮的运用
import java.awt.*;
import java.awt.event.KeyEvent;
public class Test1 {
public static void main(String[] args) throws AWTException {
// 创建一个java机器人对象
Robot robot = new Robot();
// 延时5秒执行
robot.delay(5000);
// 按下k键
robot.keyPress(KeyEvent.VK_K);
// 延时0.3秒执行
robot.delay(300);
// 弹起k键
robot.keyRelease(KeyEvent.VK_K);
}
}
鼠标的运用
import java.awt.*;
import java.awt.event.InputEvent;
import java.util.Random;
public class Test2 {
public static void main(String[] args) throws AWTException {
// 创建一个java机器人对象
Robot robot = new Robot();
// 创建一个随机函数对象
Random random = new Random();
// 延迟5秒钟
robot.delay(5000);
// 移动鼠标到右下角
robot.mouseMove(980,1000);
robot.delay(1000);
// 按下鼠标
// InputEvent.BUTTON1_DOWN_MASK 左键
// InputEvent.BUTTON2_DOWN_MASK 中键
// InputEvent.BUTTON3_DOWN_MASK 右键
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
//按下弹起间隔时间不一定都是0.3秒,而是一个随机数 0.2到0.4
double v = 0.2 + random.nextDouble()*(0.4-0.2);
v = v * 1000;
System.out.println(v);
robot.delay((int)v);
// 弹起鼠标
// InputEvent.BUTTON1_MASK 左键
// InputEvent.BUTTON2_MASK 中键
// InputEvent.BUTTON3_MASK 右键
robot.mouseRelease(InputEvent.BUTTON1_MASK);
}
}
获取屏幕颜色
import java.awt.*;
public class Test3 {
public static void main(String[] args) throws AWTException {
// 创建一个机器人类
Robot robot = new Robot();
Color pixelColor = robot.getPixelColor(980, 900);
System.out.println(pixelColor.getRed());
System.out.println(pixelColor.getGreen());
System.out.println(pixelColor.getBlue());
}
}
截图
BufferedImage bufferedImage=robot.createScreenCapture(new Rectangle(100,100,500,500));
File f=new File("D:\\save.jpg");
OutputStream os=new FileOutputStream(f);
ImageIO.write(bufferedImage, "jpg", os);
测试
import java.awt.*;
import java.awt.event.InputEvent;
import java.util.Random;
public class Test4 {
public static void main(String[] args) throws AWTException {
// 创建一个机器人类
Robot robot = new Robot();
// 创建一个随机函数对象
Random random = new Random();
robot.delay(5000);
while(true)
{
// 按下鼠标
robot.mousePress(InputEvent.BUTTON2_DOWN_MASK);
//按下弹起间隔时间不一定都是0.3秒,而是一个随机数 0.2到0.4
double v = 0.2 + random.nextDouble()*(0.4-0.2);
v = v * 1000;
System.out.println(v);
robot.delay((int)v);
// 弹起鼠标
robot.mouseRelease(InputEvent.BUTTON2_MASK);
// 间隔时间
double v2 = 3 + random.nextDouble()*(6-3);
v2 = v2 * 1000;
System.out.println(v2);
robot.delay((int)v2);
}
}
}