java实现模拟鼠标键盘操作

简介: 用java写脚本,首先需要用到Robot类 ,也就是机器人类。先new一个Robot对象然后调用里面的方法 ,keyPress方法是按下键盘上的某个键,比如下面代码里面写的

用java写脚本,首先需要用到Robot类 ,也就是机器人类。先new一个Robot对象然后调用里面的方法 ,keyPress方法是按下键盘上的某个键,比如下面代码里面写的keyPress(KeyEvevt.VK_Y); 括号里面VK后面的字母就是要按下的键,然后按下了需要弹起,在调用keyRelease方法,参数不变。


其次为了更像人,可以在按下弹起之间添加一个间隔时间,调用delay方法,参数是毫秒值。在第一个键跟第二个键之间也添加一个间隔时间,可以用Random类里面的nextInt方法生成随机数然后用Math类里面的abs方法取绝对值再设置范围,设置范围的话以下面第一个代码为例子,Math.abs(random.nextInt())%100+50;与100进行取模运算结果是一百以内,然后在加上50,结果就是50到100毫秒之间。


鼠标操作同样是调用Robot类的方法,mouseMove()方法是移动鼠标到指定坐标点,参数有两个,分别是横坐标个纵坐标。


mousePress(InputEvent.BUTTON1_DOWN_MASK)方法是按下鼠标左键,按下鼠标右键和滚轮只需要把参数里面的BUTTON后面的1改成2和3即可,2是按下滚轮,3是按下鼠标右键。


mouseRelease(InputEvent.BUTTON1_DOWN_MASK)鼠标抬起方法。


下面有两个例子:


这个是一个自从打字并发送消息的脚本。在循环最后是按下了空格和回车键,是键入文字然后发送的功能。


这个功能可以用在某些游戏里面 ,因为是通过jvm发送请求给键盘并且加入了随机停顿所以不会检测到是外挂。

public static void main(String[] args) throws AWTException {
    Robot robot = new Robot();
    Random random = new Random();
    robot.delay(5000);
    int a = 0;
    while(true) {
      robot.keyPress(KeyEvent.VK_Y);
      robot.keyRelease(KeyEvent.VK_Y);
      a = Math.abs(random.nextInt())%100+50;
      robot.delay(a);
      robot.keyPress(KeyEvent.VK_B);
      robot.keyRelease(KeyEvent.VK_B);
      a = Math.abs(random.nextInt())%100+50;
      robot.delay(a);
      robot.keyPress(KeyEvent.VK_Q);
      robot.keyRelease(KeyEvent.VK_Q);
      a = Math.abs(random.nextInt())%100+50;
      robot.delay(a);
      robot.keyPress(KeyEvent.VK_U);
      robot.keyRelease(KeyEvent.VK_U);
      robot.keyPress(KeyEvent.VK_SPACE);
      robot.keyRelease(KeyEvent.VK_SPACE);
      robot.keyPress(KeyEvent.VK_ENTER);
      robot.keyRelease(KeyEvent.VK_ENTER);
      a = Math.abs(random.nextInt())%2000+1000;
      System.out.println(a);
      robot.delay(a);
    }
  }

移动鼠标到指定坐标位置并点击鼠标左键的动作:

public static void main(String[] args) throws AWTException {
    Robot robot = new Robot();
    Random random = new Random();
    int a = 0;
    robot.delay(3000);
    robot.mouseMove(1200, 700);
    a = Math.abs(random.nextInt())%100+50;
    robot.delay(a);
    robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
    a = Math.abs(random.nextInt())%50+50;
    robot.delay(a);
    robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
  }
相关文章
|
19天前
|
分布式计算 DataWorks Java
DataWorks操作报错合集之在使用MaxCompute的Java SDK创建函数时,出现找不到文件资源的情况,是BUG吗
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
31 0
|
19天前
|
Java Android开发
java利用xml-rpc协议操作wordpress博客
java利用xml-rpc协议操作wordpress博客
16 1
|
2天前
|
Java 数据处理 索引
JAVA中的插入操作:深入解析与实现
JAVA中的插入操作:深入解析与实现
10 1
|
3天前
|
SQL Java 数据库连接
Java JDBC连接与操作深度解析
Java JDBC连接与操作深度解析
7 1
|
5天前
|
存储 Java
Java二维数组的声明与操作技术详解
Java二维数组的声明与操作技术详解
22 10
|
5天前
|
存储 Java 索引
Java二维数组的引用与操作技术详解
Java二维数组的引用与操作技术详解
|
5天前
|
存储 Java 索引
Java一维数组元素的引用与操作技术详解
Java一维数组元素的引用与操作技术详解
13 1
|
10天前
|
SQL Java 关系型数据库
JavaWeb(JDBC编程)看这一篇就够了 —— 如何使用Java操作mysql数据库
JavaWeb(JDBC编程)看这一篇就够了 —— 如何使用Java操作mysql数据库
9 0
|
10天前
|
存储 Java 编译器
Java文件IO操作基础
Java文件IO操作基础
8 0
|
14天前
|
JavaScript 前端开发 Java
《手把手教你》系列技巧篇(四十九)-java+ selenium自动化测试-隐藏元素定位与操作(详解教程)
【5月更文挑战第13天】本文主要讨论了在Selenium自动化测试中如何处理前端隐藏元素的问题。隐藏元素通常是通过`type="hidden"`或`style="display: none;"`属性实现的,它们在页面上不可见,但仍然存在于HTML代码中。Selenium可以定位到这些隐藏元素,但无法直接进行点击、输入等操作,会报错“ElementNotInteractableException”。
40 3