如何用Java的Robot完成模拟鼠标移动和键盘输入(可应用刷网课)

如何用Java的Robot完成模拟鼠标移动和键盘输入

    • 背景
    • Robot的常用方法
    • 设计逻辑
    • 代码
    • 总结

背景

对于日常刷课每十分钟点击“继续学习”的行为,想尝试使用Java程序替代。
初步想法是让鼠标移动到固定位置,每十分钟进行点击一次。
如何用Java的Robot完成模拟鼠标移动和键盘输入(可应用刷网课)_第1张图片
然后就发现了java的Robot类,觉得很神奇哈哈哈

Robot的常用方法

附上搜索api网站:

https://www.matools.com/api/java8

概述:此类用于生成本机系统输入事件,用于测试自动化,自动运行演示和需要鼠标和键盘控制的其他应用程序。 Robot的主要目的是为了方便Java平台实现的自动化测试。(自1.3版本以后使用)

1.首先你需要创建一个Robot

Robot robot  = new Robot() 
//,记得捕捉可能会发生的异常

常用的操作:
机器休眠,鼠标移动,鼠标点击,鼠标释放(松开),按键及按键释放

由于robot的操作是异步的,最好在每个操作中添加一定的休眠时间,否则会打乱你预期的操作顺序。

2.机器休眠:

robot.delay(int ms);

3.鼠标移动:

robot.mouseMove(int x , int y);

4.鼠标点击:

robot.mousePress(int buttons)
//InputEvent.BUTTON1_DOWN_MASK左键
//InputEvent.BUTTON2_DOWN_MASK中间键
//InputEvent.BUTTON3_DOWN_MASK右键

5.鼠标释放:

robot.mouseRelease(int buttons)
//InputEvent.BUTTON1_DOWN_MASK左键
//InputEvent.BUTTON2_DOWN_MASK中间键
//InputEvent.BUTTON3_DOWN_MASK右键

6.按键:

robot.keyPress(int keycode)
//KeyEvent.VK_A A键

7.按键释放

robot.keyRelease(KeyEvent.VK_A)
//KeyEvent.VK_A A键

8.截图功能

//Rectangle screenRect = new Rectangle(int width, int height);
//可以利用微信截图的方式找到坐标点
Rectangle screenRect = new Rectangle(int x, int y, int width, int height);
BufferedImage image = robot.createScreenCapture(Rectangle screenRect)
//获取一个范围内的图片
//将截图保存
public static void writeImageFile(BufferedImage bi) throws IOException {
        File outputfile = new File("saved.png");
        ImageIO.write(bi, "png", outputfile);
    }

9.给定坐标的像素点颜色

Color color =robot.getPixelColor(int x, int y)
//返回给定屏幕坐标处的像素颜色。

设计逻辑

综上运用
1.创建robot类
2.开局移动鼠标位置,找到“继续学习”的坐标
3.点击屏幕播放视频
4.循环等待十分钟后,继续重复23操作

代码

public class Lesson {
    static Robot robot;
    public static void main(String[] args) {
        try {
            robot = new Robot();
            //记得捕捉异常
        } catch (AWTException e) {
            e.printStackTrace();
        }
        for (int i=0;i<16;i++){
            robot.mouseMove(611,527);
            robot.delay(5000);
            //开局等5秒,用来切换到视频页面
            robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
            robot.delay(20);
            robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
            for (int q=0;q<10;q++){
                //等待十分钟
                robot.delay(60000);
            }
        }

    }
}

总结

java的robot可以用来进行模拟鼠标移动点击以及键盘的输入等功能,加上一点就可以用在批量点击,批量创建文件,微信的批量找点群发等事件上。
做出来的程序暂时只能在idea或者cmd的命令行窗口运行,后续在想能不能使用javafx做个窗口和打包成exe程序运行。

这里我用的获取坐标的方式算是投机取巧了,看到point是可以获取到坐标的,之后学习完在整理一下。

另外看到哔哩哔哩up主做的运用像素点通关游戏,挺有意思的,分享大家
附上链接:

https://www.bilibili.com/video/BV1GZ4y1P7zx

你可能感兴趣的:(Java,java,开发语言)