好记性不如烂笔头,娱乐一下吧!


文章目录

  • 前言
  • Robot是什么?
  • 方法介绍
  • 案例
  • 总结



前言

接上文,在娱乐“别踩方块”之后发现,朋友的短信都没有回复给惹生气了,这个时候就要开启怒怼模式让她感受到你的真诚,那是否可以利用Robot帮助我“真诚的道歉”呢?来个99+的道歉消息多么真诚!!

仅供案例测试,不要这么“诚意”啊!


Robot是什么?

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

方法介绍

// 实例化一个Robot对象, robot
Robot robot = new Robot();

// delay(30); 停顿时间
robot.delay(30);

// 将鼠标直接闪现到450,450位置 
robot.mouseMove(450,450);

// 模拟按下鼠标左键
robot.mousePress(KeyEvent.BUTTON1_DOWN_MASK);

// 模拟按下松开的反应时间
robot.delay(30);

// 模拟松开鼠标左键
robot.mouseRelease(KeyEvent.BUTTON1_DOWN_MASK);

// 获取某点位的Color值
robot.getPixelColor(450,450);

如果需要知道当前屏幕每个点位置的方式有很多,这里我使用的是utools中的“zb” 坐标拾取,十分方便。

案例

  • 根据上述的Robot方法可以看出,Robot实际上就是在模仿人的操作
  • 因此,我们可以通过Robot读取我们预设的内容,然后通过Toolkit类读取到粘贴板上,最后使出我们的绝技CV大法输出到指定地方
  • 当然,我们还可以在预设时间,在深夜发送消息
  • 那么步骤如下:
  • 首先写一个要输出的内容总体,例如 a.txt
这里是第1行
这里是第2行
这里是第3行
这里是第4行
这里是第5行
这里是第6行
这里是第7行
这里是第8行
  • 判断时间是否到达指定时间
// 可以考虑通过 while 循环反复判断时间
	// 此处判断时间
    public static boolean checkNow(String needTime) throws Exception {
    	// 设置时间格式
        SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        // 输出当前时间,主要用来测试,判断是否到达时间
        System.out.println(sdf.format(System.currentTimeMillis()));
        // 输出指定时间,用来对比
        System.out.println(needTime);
        // 输出比较时间
        System.out.println(needTime.equals(sdf.format(System.currentTimeMillis())));
        // 到达指定时间,退出循环
        if (needTime.equals(sdf.format(System.currentTimeMillis()))){
            return false;
        }
        // 每秒检测一次
        Thread.sleep(1000);
        return true;
    }
  • 读取文件以及CV大法
// 读取文件
	public static void reader() throws Exception {
		// 读取文件
        String s = Files.readString(Paths.get("D:\\输出文本.txt"));
        Scanner sc = new Scanner(s);
        while (sc.hasNext()){
            Thread.sleep(1000);
        	// 读取整行
            String str = sc.nextLine();
            // 获取系统剪贴板
            Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
            // 封装str
            Transferable ts = new StringSelection(str);
            // 把文本内容设置到系统剪贴板
            clipboard.setContents(ts, null);
            cv(new Robot());
        }

	// CV大法
    public static void cv(Robot r) throws Exception {
        Thread.sleep(0);
        System.out.println("sleep ...");

        r.keyPress(KeyEvent.VK_ENTER);
        r.keyRelease(KeyEvent.VK_ENTER);
        r.keyPress(KeyEvent.VK_CONTROL);
        r.keyPress(KeyEvent.VK_V);
        r.keyRelease(KeyEvent.VK_CONTROL);
        r.keyRelease(KeyEvent.VK_V);
        Thread.sleep(1500);
        r.keyPress(KeyEvent.VK_ENTER);
        r.keyRelease(KeyEvent.VK_ENTER);

        System.out.println("complete output....");
    }
  • 最后测试一下吧!
public static void main(String[] args) throws Exception {
    	// 传入开始时间,咱来个深夜道歉测试,请勿现实使用啊!
        init("2022-11-13 20:26:05");
    }

    public static void init(String needTimes) throws Exception {
    	// checkNow() 主要用来判断是否到时间
        while (checkNow(needTimes)){}
        // 开始读取
        reader();
    }

    }
  • 最终结果如图所示

总结

Robot可以模拟键盘鼠标甚至获取到屏幕颜色等等,本文通过Robot读取文本内容并且CV大法发送消息。
以上就是本文关于Robot的全部内容