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

news2024/12/26 9:29:37

目录

  • 前言:
  • 理论依据:
  • 现实依据:
  • 朴素版只能循环阅读不能翻页:
  • 升级版 翻页 + 阅读:
  • 如何使用:

前言:

最近发现有个阅读得读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,再进入刚打开的阅读页面即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/623174.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(1Gb)S28HS01GTGZBHA030/ S28HS01GTGZBHV033/ S28HS01GTGZBHA033 FLASH - NOR闪存器件

产品简介&#xff1a; Infineon 带有HyperBus™的S26HSxT以及S26HLxT Semper™闪存是一种高性能、安全可靠的NOR闪存解决方案。 这些组件集成了关键的安全功能&#xff0c;用于汽车、工业、通信等行业的各种应用。S26HSxT和S26HLxT Semper闪存采用HyperBus接口&#xff0c;符…

仙境传说RO:添加限购物品刷新物品库存教程

仙境传说RO&#xff1a;添加限购物品刷新物品库存教程 大家好我是艾西&#xff0c;在游戏中我们会有普通的基础装备那么必然就会有到顶的套装&#xff0c;往往可能一套到顶的套装就可能霸服。那么就需要GM去做游戏的设定以及限制&#xff0c;上一篇文章中我给大家讲述了如果创…

风控系统设计

一、思路 要实现一个简单的业务风控组件,要做什么工作呢? 1.风控规则的实现 a.需要实现的规则: 自然日计数 自然小时计数 自然日自然小时计数 自然日自然小时计数 这里并不能单纯地串联两个判断,因为如果自然日的判定通过,而自然小时的判定不通过的时候,需要回退,自然日…

NetApp 混合云技术

为何选择 NetApp 的混合云 NetApp 可帮助您构建一个现代化的混合云&#xff0c;从而统一您的基础架构&#xff0c;并让您的数据可以自由流动到所需的任何位置&#xff0c;确保以数据为中心的业务能够快速应对变化&#xff0c;灵活调整方向&#xff0c;并获得竞争优势。 什么是…

界面控件DevExtreme工具栏 - 拥有全新的自适应模式/弹出窗口

本文涵盖了最近对DevExtreme JavaScript工具栏组件(v22.2)所做的更改&#xff0c;并简要描述了相关的实现细节。 DevExtreme拥有高性能的HTML5 / JavaScript小部件集合&#xff0c;使您可以利用现代Web开发堆栈&#xff08;包括React&#xff0c;Angular&#xff0c;ASP.NET C…

对话人工智能 |新时代AI如何“落地“

前言&#xff1a; Comate代码助手推出&#xff0c;现场生成了贪吃蛇游戏&#xff0c;我们距离AI自动编程还有多远&#xff1f; 文章目录 序章正文背景基础坚实文心大模型飞浆深度学习框架 Comate的出现优质的智能助理和伙伴多场景适用优势特征Demo演示视频&#xff1a; 总结 序…

【C++学习】C++入门(1)

写在前面 欢迎来到C的世界&#xff0c;这是一门令人兴奋的语言。 好吧&#xff0c;每当我开始阅读C的书籍的时候&#xff0c;开头的第一句话必定是这个&#xff0c; 也不知道其他语言的编程书籍是不是这样&#xff0c;那就让这句话也作为我C分享之路上的第一句话吧。 目录 …

mac配置iterm2

1、iTerm2 - macOS Terminal Replacement 下载 2、设置默认 3、配置主题theme 这里选择用Solarized Dark theme&#xff0c;下载地址&#xff1a;http://ethanschoonover.com/solarized&#xff0c;解压。 我这里失效了&#xff0c;选择从github上下载Solarized Dark这个主题…

拼图游戏-第14届蓝桥杯国赛Scratch真题初中级组第5题

[导读]&#xff1a;超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成&#xff0c;后续会不定期解读蓝桥杯真题&#xff0c;这是Scratch蓝桥杯真题解析第147讲。 拼图游戏&#xff0c;本题是2023年5月28日上午举行的第14届蓝桥杯国赛Scratch图形化编程初中级组真题第5题&…

国产Gauss 分布式数据库概述

一、前言 GaussDB 是华为2023年6月7日发布新一代分布式数据库&#xff0c;采用share-nothing架构&#xff0c;数据自动分片&#xff0c;通过GTM-Lite技术实现事务强一致&#xff0c;无中心节点性能瓶颈&#xff0c;是华为基于openGauss自主创新研发的一款分布式关系型数据库&am…

spark的使用

国内源下载 https://mirrors.cloud.tencent.com/apache/spark/ 环境配置(三台机器都要配置) 修改/etc/profile export JAVA_HOME/export/server/jdk export HADOOP_HOME/export/server/hadoopexport SPARK_HOME/export/server/spark export PYSPARK_PYTHON/pythonenv/pyspark…

苹果MR Vision Pro将会带动哪些零部件出货?

苹果如何重新定义AR? 在如今以智能手机为主的消费电子市场下行阶段&#xff0c;市场急需开辟一个新的领域带来新的增长点&#xff0c;以往被寄予厚望的VR/AR等头显设备在经历了数年发展后&#xff0c;依旧难堪大任&#xff0c;业界都把希望寄托在苹果身上。 简单来说&#xf…

学习Java一年的程序员的Python学习记录(转行了,校招Java根本找不到工作)

文章目录 一 基础语法二 集合三 函数四 IO五 项目结构六 面向对象 一 基础语法 Python如果是部署在Linux上&#xff0c;是需要通过源码去编译安装的&#xff0c;在编译的过程中&#xff0c;会以来一些第三方的软件。所以这些软件需要提前安装一下。 yum install wget zlib-deve…

VS报错集锦 --- 出现:error LNK2005: _DllMain@12 已经在 *****.obj 中定义 错误

出现的问题&#xff1a; 1>mfcs140d.lib(dllmodul.obj) : error LNK2005: DllMain 已经在 DllMain.obj 中定义 解决方法&#xff1a; 项目 -- 属性 -- c/c -- 预处理器 -- 将预处理定义中的_USRDLL 删除即可

“大四在读生”都四面成功拿到字节跳动Offer了,你还有什么理由去摸鱼?

博主大四在读&#xff0c;投的是字节 Data 的软件测试岗位实习生&#xff0c;base 杭州。 时间线&#xff1a; 4.12 投递4.13 安排简历筛选4.14 安排面试4.19 16:00 一面4.22 16:00 二面 4.23 8:00 三面4.23 16:00 HR 面4.23 16:30 Offer 一面 你对字节跳动的了解和认知有哪…

Allegro16.6详细教程(四)

(2) PIN的定義 如果用第一種方式產生Netlist的話,就要對於一些Power pin加以定義。 1.滑鼠點選想定義的零件。 2.點選選單中Edit>Part。 3.用滑鼠點選想定義的Pin腳。 4.點選功能表中Edit>Properties,透過這些步驟就看到了下面的這個對話方塊了。 在這裏主要是把T…

Apache Flink 1.17

Apache Flink 1.17 1. Flink 1.17 Overview2. Flink 1.17 Overall Story3. Flink 1.17 Key Features4. Summary5. Q&A 1. Flink 1.17 Overview Flink 1.17 版本完成了 7 个 FLIP&#xff0c;累计贡献者 170&#xff0c;解决 600Issue 以及 1100Commits&#xff0c;整体来看…

ppt如何录屏?电脑怎么录制ppt文稿?

案例&#xff1a;在电脑上怎么录制PPT文稿&#xff0c;具体怎么操作&#xff1f; 【我工作的时候经常需要用到ppt文稿&#xff0c;有时还需要对PPT文稿进行录制&#xff0c;但我不知道如何操作。有小伙伴知道在电脑上如何录制ppt文稿吗&#xff1f;需要用到什么工具&#xff1…

热水器语音芯片,带有温度检测算法、数码管显示语音ic,WTV380

在现代科技不断进步的时代&#xff0c;智能家居产品成为越来越多消费者的选择&#xff0c;在热水器行业为了提供更智能、便捷的用户交互体验&#xff0c;一款带有数码管显示语音提示二合一&#xff0c;多功能语音芯片方案 —— WTV380 WTV380能够实现语音播报热水器的各种信息…

学PCB设计要精通模电吗?

PCB设计是电子工程师在电路设计领域中的重要一环&#xff0c;而模拟电路设计&#xff08;简称&#xff1a;模电&#xff09;是其中的核心内容之一&#xff0c;很多小白在初学PCB设计都会困惑&#xff0c;学PCB设计是否要精通模电&#xff1f;这篇文或许能解惑&#xff0c;本文将…