JDK里鲜为人知的“机器人”类库

java1234

共 4084字,需浏览 9分钟

 · 2021-06-09

点击上方蓝色字体,选择“标星公众号”

优质文章,第一时间送达

小伙伴们,大家好,今天锋哥来给大家介绍下Jdk里很少用到的一个“机器人”类库-Robot



Java中Robot类位于java.awt.Robot,该类用于为测试自动化,自运行演示程序和其他需要控制鼠标和键盘的应用程序生成本机系统输入事件,Robot类的主要目的是便于Java平台实现自动测试。


Robot可以模拟鼠标和键盘的输入,相当于Java版的按键精灵。



核心就是自动化;



我这边有个应用案例,给大家看看;



我几年前开始搞在线教育的时候,录制了很多视频,基础课程全免费,我比较穷,没钱,就用免费基础课程给自己引流,打打广告,然后项目实战课程就是收费的,人性不可揣测,所以视频必须加密,因为我课程也单卖,也可以vip一起卖,所以一个课程对应一个密码,开始有几个课程还好,我人工搞,一个一个生成,后来懵逼了,课程10几个,一个一个生成,还得3,4分钟,有时候还搞错。



所以想办法解决这个问题,第一个是请人工搞,要花钱,第二个就是用程序帮我干这种死活。



最终找到了jdk里的Robot类库,自己代码功底可以,干了1小时,就写完了代码,测试下,爽死;


涉及一些个人搞事隐私,所以GIF画质模糊点,大家请担当。


学习使用的话,大家要结合Jdk API文档;

(我这边就截图偷懒下,懒得调整格式)


类介绍


构造方法摘要和方法摘要


键盘上的每一个键,都可以通过KeyEvent的常量来标识:


最后锋哥给出一个入门案例,大家可以学习体验下:



实现功能

用Robot模拟双击打开一个指定位置的文本文件,

然后文本里输入一段文字,

最后模拟用户保存文件。


实现效果


实例代码

package com.java1234;

import java.awt.*;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;

/**
 * @author java1234_小锋
 * @site www.java1234.com
 * @company Java知识分享网
 * @create 2021-06-07 18:30
 */

public class Test {

    private final static int x=38; // x坐标

    private final static int y=38; // y坐标

    private final static int []keys={ // 输入字母
            KeyEvent.VK_J,KeyEvent.VK_A,KeyEvent.VK_V,KeyEvent.VK_A,
            KeyEvent.VK_1,KeyEvent.VK_2,KeyEvent.VK_3,KeyEvent.VK_4,
            KeyEvent.VK_SPACE,
            KeyEvent.VK_N,KeyEvent.VK_I,KeyEvent.VK_U,KeyEvent.VK_B,
            KeyEvent.VK_I,KeyEvent.VK_L,KeyEvent.VK_I,KeyEvent.VK_L,
            KeyEvent.VK_T,KeyEvent.VK_Y
    };


    public static void main(String[] args) throws Exception{
        Robot robot = new Robot(); // new一个机器人

        // 模拟双击打开一个指定位置的文本文件
        robot.mouseMove(38,38); // 模拟移动鼠标到指定位置
        robot.delay(100); // 休息0.1秒
        robot.mousePress(InputEvent.BUTTON1_MASK); // 模拟双击打开文本文件
        robot.mouseRelease(InputEvent.BUTTON1_MASK);
        robot.mousePress(InputEvent.BUTTON1_MASK);
        robot.mouseRelease(InputEvent.BUTTON1_MASK);
        robot.delay(1000); // 休息0.1秒

        // 模拟输入文字
        for(int i=0;i<keys.length;i++){
            robot.keyPress(keys[i]);
            robot.keyRelease(keys[i]);
            robot.delay(100);
        }

        // 模拟保存
        robot.delay(1000); // 休息0.1秒
        robot.keyPress(KeyEvent.VK_CONTROL); // 模拟 ctrl+s
        robot.keyPress(KeyEvent.VK_S);
        robot.keyRelease(KeyEvent.VK_S);
        robot.keyRelease(KeyEvent.VK_CONTROL); // 模拟释放 ctrl+s
    }
}



感谢小伙伴们看完,奥利给!!!









浏览 26
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报