使用java.awt.Robot实现java版的自动点击事件

举报
小马哥学JAVA 发表于 2023/02/18 17:53:51 2023/02/18
【摘要】 介绍:最近遇到了一个需要人工点击的事情,很麻烦,于是找了一下资料,写了一个自动的鼠标点击的程序使用的包:java.awt.Robot具体的代码Robot robot = new Robot();//第一步,首先选择需要处理的类53\38robotTest.clickMouse(robot, 310, i, times);//robot.delay(500);该代码的主要功能是鼠标进行点击屏幕...


  • 介绍:

最近遇到了一个需要人工点击的事情,很麻烦,于是找了一下资料,写了一个自动的鼠标点击的程序

使用的包:

java.awt.Robot

具体的代码

Robot robot = new Robot();

  • //第一步,首先选择需要处理的类53\38

robotTest.clickMouse(robot, 310, i, times);//

robot.delay(500);


该代码的主要功能是鼠标进行点击屏幕上面的像素点;

  • 第二步:关键方法:

robot.mouseMove(x, y);//鼠标的移动像素点,用于由于软件不能很敏感的识别鼠标的情况下使用的

robot.delay(times);

robot.mousePress(InputEvent.BUTTON1_MASK);

robot.delay(delay);

robot.mouseRelease(InputEvent.BUTTON1_MASK);

robot.delay(delay);


  • 第三步:整个全部的代码:

import java.awt.AWTException;

import java.awt.Robot;

import java.awt.event.InputEvent;

import java.awt.event.KeyEvent;

 

 

/**

* @author

* @date

*

description:Robot测试类,

*/

public class robotTest {

 

   private static int times=250;

 

   public robotTest() {

       super();

   }

 

   public static void main(String[] args) {

 

       int i = 113;

       while (i < 950) {

           try {

               Robot robot = new Robot();

               //第一步,首先选择需要处理的类53\38

               robotTest.clickMouse(robot, 310, i, times);//

               robot.delay(500);

 

               //鼠标点击文件的位置

//                robotTest.clickMouse(robot, 756, 250, 500);

               robotTest.clickMouse(robot, 563, 273, times);

               robot.delay(500);

               //第二步,点击菜单里面的code,然后选择generate

               //鼠标移动到坐标(635,454)

               robotTest.clickMouse(robot, 196, 34, times);

               robot.delay(500);

               //第三步,选择code里面的generate

               //鼠标移动到坐标(635,454)

               robotTest.clickMouse(robot, 290, 117, times);

               robot.delay(500);

 

               //第四步,选择generate里面的tostring方法

               //鼠标移动到坐标=文件的位置x+53,y+38

//                robot.mouseMove(836, 292);

//                robot.mouseMove(810, 290);

               robot.mouseMove(616, 311);

               robot.mousePress(InputEvent.BUTTON1_MASK);

               //移动到tistring健

//                robotTest.clickMouse(robot, 810, 393, 500);

               robotTest.clickMouse(robot, 616, 411, times);

               robot.delay(500);

               //第四步,选择tostring方法里面的ok健

               //鼠标移动到坐标(635,454)

               robotTest.clickMouse(robot, 840, 771, times);

               robot.delay(500);

 

               //

               robotTest.clickMouse(robot, 1217, 475, times);

               robot.delay(500);

 

               robotTest.clickMouse(robot, 1067, 475, times);

               robot.delay(times);

               i=i+20;

 

           } catch (AWTException e) {

               // TODO Auto-generated catch block

               e.printStackTrace();

           }

       }

 

   }

 

   public static void pressKey(Robot robot, int[] keys, int delay) {

       for (int i = 0; i < keys.length; i++) {

           robot.keyPress(keys[i]);

           robot.keyRelease(keys[i]);

           robot.delay(times);

       }

       //处理完需要延迟

       robot.delay(delay);

   }

 

   public static void clickMouse(Robot robot, int x, int y, int delay) {

//        robot.mouseMove(x, y);

       robot.mouseMove(x, y);

       robot.delay(times);

       robot.mousePress(InputEvent.BUTTON1_MASK);

       robot.delay(delay);

       robot.mouseRelease(InputEvent.BUTTON1_MASK);

       robot.delay(delay);

   }

}

  • 总结:

很多的时候,频繁的重复的鼠标点击工作,可以写一个小程序来处理,避免多余的人工浪费;但是

在开发的时候,还是需要频繁的调整一下延时或者移动鼠标等事件,避免屏幕识别出来,是程序在跑的;

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。