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

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

背景

对于日常刷课每十分钟点击“继续学习”的行为,想尝试使用Java程序替代。
初步想法是让鼠标移动到固定位置,每十分钟进行点击一次。

然后就发现了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的Robot完成模拟鼠标移动和键盘输入(可应用刷网课)相关推荐

  1. C#模拟鼠标操作以及键盘输入

    模拟鼠标以及键盘基本输入源代码 using System; using System.Collections.Generic; using System.Linq; using System.Runt ...

  2. Java:使用Robot类模拟键盘, 以Alt码方式输出汉字

    Java:使用Robot类模拟键盘, 以Alt码方式输出汉字 文章目录 Java:使用Robot类模拟键盘, 以Alt码方式输出汉字 java.awt.Robot类 使用Alt码输出汉字 尝试 `Al ...

  3. Control Study - 键盘模拟鼠标(实现用键盘操作鼠标光标)(示例代码下载)

    (一).功能 实现用键盘模拟鼠标移动的功能,在游戏设计中常用到 *操作说明:  当运行程序后,放开鼠标,按键盘上的光标键移动,可以代替鼠标. (二).代码   1  using  System;    ...

  4. html 鼠标中键事件,Javascript事件模拟(鼠标事件、键盘事件)

    在javascript编程中,事件是用来描述网页中某一特定有趣时刻的,众所周知事件通常是在由用户和浏览器进行交互时触发,其实不然,通过Javascript可以在任何时间触发特定的事件,并且这些事件与浏 ...

  5. 利用代码实现自动刷网课阅读时长功能 JAVA

    目录 前言: 理论依据: 现实依据: 朴素版只能循环阅读不能翻页: 升级版 翻页 + 阅读: 如何使用: 前言: 最近不也快结课了,网课该刷的都要刷掉,最近不就把一门思政课刷完了,课后习题也做了,但是 ...

  6. java判断五位数回文数_【视频+图文】Java经典基础练习题(五):键盘输入一个五位数,判断这个数是否为回文数...

    能解决题目的代码并不是一次就可以写好的 我们需要根据我们的思路写出后通过debug模式找到不足再进行更改 多次测试后才可得到能解决题目的代码! 通过学习,练习[Java基础经典练习题],让我们一起来培 ...

  7. java绘制矩形 鼠标_如何用java在面板上用鼠标绘制出一个矩形

    展开全部 import java.awt.*; import java.awt.geom.*; import javax.swing.*; import java.awt.event.*; impor ...

  8. java调用reader的nextInt_Java中如何从键盘输入内容: import java.util.Scanner; .nextLine(); .hasNextInt();...

    import java.util.Scanner; public class Reader { public static void main(String[] args) { Scanner sca ...

  9. java代码做repeat次运算,从键盘输入几个数,比最值

    总结:今天这个题目有点灵活,因为它不但要求输出结果,还要进行几次相同的输入,不退出循环 import java.util.Scanner;//从键盘一次输入更多的数,然后把每一次的数进行---可比较, ...

  10. java录入个人信息程序_Java:用键盘输入个人信息并输出

    V.1 */ public class ShowResume{ public static void main(String[] args) { int age=25; //年龄 String nam ...

最新文章

  1. python3各个版本是通用的吗-python3各版本
  2. 洛谷.4383.[八省联考2018]林克卡特树lct(树形DP 带权二分)
  3. 陈丕宏:公司领导人对企业文化的影响
  4. Vue 的路由实现 Hash模式 和 History模式
  5. echarts scatter
  6. python 仿真模拟_Python SimPy 仿真系列 (1)
  7. PAT1019. 数字黑洞
  8. 新浪微博API使用方法
  9. 专业管理系统-包含VB源代码(数据库)
  10. 电影院售票系统mysql表格_电影院票务管理系统数据库设计(1)
  11. C语言如何分离一个数的高低位,如何将2个字节变成一个字节
  12. VC++ 操作Word(使用微软office控件)
  13. GIS空间分析(二)—— 空间分析的历史与发展
  14. java中判断指定日期是星期几
  15. python把汉字变成拼音英文_利用python将表格中的汉字转化为拼音
  16. CSS布局示例 1 - 页面色块布局
  17. Excel中如何快速输入☑和☒
  18. php开源混合模式吗,CSS3混合模式使用详解
  19. C 语言为什么不会过时?
  20. 如何把二维数组传参给函数

热门文章

  1. vivo android 6.0 root,vivo X6 A(全网通)如何获取ROOT权限教程
  2. 万圣节html代码大全,《方舟 生存进化》万圣节代码大全一览
  3. 柔性电子综述2014:Wearable Electronics and Smart Textiles 可穿戴电子设备
  4. 地市级公安局实战通信指挥调度方案
  5. 信号与系统 chapter5 线性系统与非线性系统
  6. 若启用该计算机上的无线功能 请使用,无线网络启用后还显示已禁用怎么办_常见问题解析...
  7. 微软的APT服务器探针产品,原子探针断层扫描| APT | EAG实验室
  8. python pip下载安装一半退出_【Python】pip安装numpy安装到一半失败解决办法
  9. 高等数学(第七版)同济大学 习题2-4 个人解答
  10. bodymovin导出没有html5,Bodymovin导出Json文件避坑指南