如何用Java的Robot完成模拟鼠标移动和键盘输入(可应用刷网课)
如何用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完成模拟鼠标移动和键盘输入(可应用刷网课)相关推荐
- C#模拟鼠标操作以及键盘输入
模拟鼠标以及键盘基本输入源代码 using System; using System.Collections.Generic; using System.Linq; using System.Runt ...
- Java:使用Robot类模拟键盘, 以Alt码方式输出汉字
Java:使用Robot类模拟键盘, 以Alt码方式输出汉字 文章目录 Java:使用Robot类模拟键盘, 以Alt码方式输出汉字 java.awt.Robot类 使用Alt码输出汉字 尝试 `Al ...
- Control Study - 键盘模拟鼠标(实现用键盘操作鼠标光标)(示例代码下载)
(一).功能 实现用键盘模拟鼠标移动的功能,在游戏设计中常用到 *操作说明: 当运行程序后,放开鼠标,按键盘上的光标键移动,可以代替鼠标. (二).代码 1 using System; ...
- html 鼠标中键事件,Javascript事件模拟(鼠标事件、键盘事件)
在javascript编程中,事件是用来描述网页中某一特定有趣时刻的,众所周知事件通常是在由用户和浏览器进行交互时触发,其实不然,通过Javascript可以在任何时间触发特定的事件,并且这些事件与浏 ...
- 利用代码实现自动刷网课阅读时长功能 JAVA
目录 前言: 理论依据: 现实依据: 朴素版只能循环阅读不能翻页: 升级版 翻页 + 阅读: 如何使用: 前言: 最近不也快结课了,网课该刷的都要刷掉,最近不就把一门思政课刷完了,课后习题也做了,但是 ...
- java判断五位数回文数_【视频+图文】Java经典基础练习题(五):键盘输入一个五位数,判断这个数是否为回文数...
能解决题目的代码并不是一次就可以写好的 我们需要根据我们的思路写出后通过debug模式找到不足再进行更改 多次测试后才可得到能解决题目的代码! 通过学习,练习[Java基础经典练习题],让我们一起来培 ...
- java绘制矩形 鼠标_如何用java在面板上用鼠标绘制出一个矩形
展开全部 import java.awt.*; import java.awt.geom.*; import javax.swing.*; import java.awt.event.*; impor ...
- 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 ...
- java代码做repeat次运算,从键盘输入几个数,比最值
总结:今天这个题目有点灵活,因为它不但要求输出结果,还要进行几次相同的输入,不退出循环 import java.util.Scanner;//从键盘一次输入更多的数,然后把每一次的数进行---可比较, ...
- java录入个人信息程序_Java:用键盘输入个人信息并输出
V.1 */ public class ShowResume{ public static void main(String[] args) { int age=25; //年龄 String nam ...
最新文章
- python3各个版本是通用的吗-python3各版本
- 洛谷.4383.[八省联考2018]林克卡特树lct(树形DP 带权二分)
- 陈丕宏:公司领导人对企业文化的影响
- Vue 的路由实现 Hash模式 和 History模式
- echarts scatter
- python 仿真模拟_Python SimPy 仿真系列 (1)
- PAT1019. 数字黑洞
- 新浪微博API使用方法
- 专业管理系统-包含VB源代码(数据库)
- 电影院售票系统mysql表格_电影院票务管理系统数据库设计(1)
- C语言如何分离一个数的高低位,如何将2个字节变成一个字节
- VC++ 操作Word(使用微软office控件)
- GIS空间分析(二)—— 空间分析的历史与发展
- java中判断指定日期是星期几
- python把汉字变成拼音英文_利用python将表格中的汉字转化为拼音
- CSS布局示例 1 - 页面色块布局
- Excel中如何快速输入☑和☒
- php开源混合模式吗,CSS3混合模式使用详解
- C 语言为什么不会过时?
- 如何把二维数组传参给函数
热门文章
- vivo android 6.0 root,vivo X6 A(全网通)如何获取ROOT权限教程
- 万圣节html代码大全,《方舟 生存进化》万圣节代码大全一览
- 柔性电子综述2014:Wearable Electronics and Smart Textiles 可穿戴电子设备
- 地市级公安局实战通信指挥调度方案
- 信号与系统 chapter5 线性系统与非线性系统
- 若启用该计算机上的无线功能 请使用,无线网络启用后还显示已禁用怎么办_常见问题解析...
- 微软的APT服务器探针产品,原子探针断层扫描| APT | EAG实验室
- python pip下载安装一半退出_【Python】pip安装numpy安装到一半失败解决办法
- 高等数学(第七版)同济大学 习题2-4 个人解答
- bodymovin导出没有html5,Bodymovin导出Json文件避坑指南