JAVA 巧用 Robot 类(应用于网课)

前言:

最近发现有个阅读得读300分钟,懒得去找软件,于是就自己写了一个代码去实现。

在这里插入图片描述


理论依据:

平常我们在电脑上看书,主要是利用鼠标中间的滚轮进行上下的翻阅,达到阅读完整篇文章的目的,所以理论上我们只要做到利用代码能控制鼠标,或者电脑页面进行上下翻阅即可,再添加一个while(true)循环就能实现"永动模式"。

还想整再多一点的操作那也可以试试自动换章节。

刚好我的这门课这个阅读部分的章节是放在一起,且在文章左边,那就更好操作了。

在这里插入图片描述


现实依据:

Java中的Robot类刚好能提供给我们上述所需要的功能,这里简单提及一下本代码涉及到的类方法。

1.创建对象:

Robot r = new Robot();

2.延时函数

r.delay(毫秒值);

3.鼠标按下:

r.mousePress(鼠标上的按键);
//鼠标左键:InputEvent.BUTTON1_DOWN_MASK
//鼠标中键:InputEvent.BUTTON2_DOWN_MASK
//鼠标右键:InputEvent.BUTTON3_DOWN_MASK

4.鼠标释放:

r.mouseRelease(鼠标上的按键);
//鼠标左键:InputEvent.BUTTON1_DOWN_MASK
//鼠标中键:InputEvent.BUTTON2_DOWN_MASK
//鼠标右键:InputEvent.BUTTON3_DOWN_MASK

5.鼠标移动:

//鼠标滚动(参数小于0,表示向上滚动;参数大于0,表示向下滚动)
r.mouseWheel(int wheelAmt);

6.鼠标滚轮滑动:

//鼠标滚动(参数小于0,表示向上滚动;参数大于0,表示向下滚动)
r.mouseWheel(int wheelAmt);

参考来源:Java中的Robot类详解

理论成立代码如下。

朴素版只能循环阅读不能翻页:

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.InputEvent;
import java.util.*;
//67%
public class Main {
 public static void main(String[] args) throws AWTException {
	   Robot r = new Robot();
	   while(true) {
		   
		   
		    for(int i = 0; i < 110; i ++) {
		        r.mouseWheel(1);
		        r.delay(300);
		    }
		    for(int i = 0; i < 110; i ++) {
		        r.mouseWheel(-1);
		        r.delay(300);
		    }
		    
		    
		  }  
 }
}

升级版 翻页 + 阅读:

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.InputEvent;
import java.util.*;
//需要将读书页面大小调至67%
public class Main {
 public static void main(String[] args) throws AWTException {
	   Robot r = new Robot();
	   r.delay(3000);
	   r.mouseMove(650, 310);//初始调味
	   r.delay(300);
	  while(true) {
	      r.mouseMove(650, 310);//位置矫正
	      r.delay(100);
	      homing();
	      for(int i = 1; i <= 20; i ++) {//随机抽取一个章节  
		     r.mouseMove(650, 310);//位置矫正
		     r.delay(100);
		     computer_read();
		     r.delay(100);
		     // homing();
		     r.delay(100);
		     r.mouseWheel(i + 1);
		     r.delay(100);
		     button_use();
		     button_use();//连续点击两下,唤醒鼠标箭头
		     r.delay(1000); 
	   }
	  }
 }
 public static void button_use() throws AWTException {//进入这个章节
	  Robot r = new Robot();
	  r.mousePress(InputEvent.BUTTON1_DOWN_MASK);
	  r.delay(600);
	  r.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
	  r.delay(600);
	 }
 
 public static void computer_read() throws AWTException {//阅读
	    Robot r = new Robot();
	 
		for(int j = 0; j < 1; j++) {
		   
		    for(int i = 0; i < 110; i ++) {
		     r.mouseWheel(1);
		        r.delay(300);
		    }
		    for(int i = 0; i < 110; i ++) {
		     r.mouseWheel(-1);
		        r.delay(300);
		    }
		   
		 }
 }
 
 public static void homing() throws AWTException {//归位
	 Robot r = new Robot();
	 for(int i = 0; i < 60; i ++) {
	     r.mouseWheel(-1);
	        r.delay(300);
	    }
 }
 
}

上述代码是针对我的阅读的,并不是对所有阅读都能管用,这里主要是记录一下实现过程,以及分享一些实用方法。


如何使用:

1.打开你的阅读任务并进入,调整页面大小为67%
在这里插入图片描述

ctr --

2.将代码复制到eclipse编译器上

3.运行代码,并缩小eclipse,再进入刚打开的阅读页面即可。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaRobot详解 概述 概述 JavaRobot位于java.awt.Robot,该⽤于为测试⾃动化,⾃运⾏演⽰程序和其他需要控制⿏标和键盘的⽤程序⽣成本机系统输⼊ 事件,Robot的主要⽬的是便于Java平台实现⾃动测试。 Robot可以模拟⿏标和键盘的输⼊,相当于Java版的按键精灵。 常⽤⽅法 常⽤⽅法 1.创建实例 Robot robot = new Robot(); 2.延时函数 robot.delay(毫秒值); 3.⿏标按下 robot.mousePress(⿏标上的按键); //⿏标左键:InputEvent.BUTTON1_DOWN_MASK //⿏标中键:InputEvent.BUTTON2_DOWN_MASK //⿏标右键:InputEvent.BUTTON3_DOWN_MASK 4.⿏标释放 robot.mouseRelease(⿏标上的按键); //⿏标左键:InputEvent.BUTTON1_DOWN_MASK //⿏标中键:InputEvent.BUTTON2_DOWN_MASK //⿏标右键:InputEvent.BUTTON3_DOWN_MASK 5.⿏标移动 //⿏标移动到指定位置 robot.mouseMove(int x,int y); 6.⿏标滚轮滑动 //⿏标滚动(参数⼩于0,表⽰向上滚动;参数⼤于0,表⽰向下滚动) robot.mouseWheel(int wheelAmt); 7.键盘按下指定的键 //键盘按下指定的键-----keycode:键盘键值常量,定义在KeyEvent.VK_XXX 中 //KeyEvent.VK_WINDOWS:键盘上的windows键 //KeyEvent.VK_CONTROL:键盘上的ctrl键 //KeyEvent.VK_L:键盘上的L键 robot.keyPress(int keycode); 8.键盘释放指定的键 //键盘按下指定的键-----keycode:键盘键值常量,定义在KeyEvent.VK_XXX 中 //KeyEvent.VK_WINDOWS:键盘上的windows键 //KeyEvent.VK_CONTROL:键盘上的ctrl键 //KeyEvent.VK_L:键盘上的L键 robot.keyRelease(int keycode); 9.获取屏幕指定坐标处像素颜⾊ //获取指定坐标处的像素颜⾊ Color color=robot.getPixelColor(int x,int y); 10.截取指定区域的图像(截图功能) //获取指定矩形区域的图像(截图) BufferedImage bufferedimage=robot.createScreenCapture(Rectangle screenRect); ⽰例:截取指定矩形区域的图像,并保存到指定的路径 public static void main(String[] args) throws AWTException, IOException { Robot robot=new Robot(); //获取指定矩形区域的屏幕图像 BufferedImage bufferedImage=robot.createScreenCapture(new Rectangle(100,100,500,500)); File f=new File("D:\\save.jpg"); OutputStream os=new FileOutputStream(f); ImageIO.write(bufferedImage, "jpg", os); } ⽰例:在指定区域⾃动输⼊指定字符 robot.mouseMove(342, 626); robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); robot.delay(500); robot.keyPress(KeyEvent.VK_L); robot.keyRelease(KeyEvent.VK_L); robot.delay(500); robot.keyPress(KeyEvent.VK_O); robot.keyRelease(KeyEvent.VK_O); robot.delay(500); robot.keyPress(KeyEvent.VK_V); robot.keyRelease(KeyEvent.VK_V); robot.delay(500); robot.keyPress(KeyEvent.VK_E); robot.keyRelease(KeyEvent.VK_E)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值