zoukankan      html  css  js  c++  java
  • JAVA操作鼠标和键盘

    用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);
    		}
    	}
    

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

    import java.awt.*;
    import java.util.*;
    import java.awt.event.InputEvent;
    
    public class mouse{
        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);
            }
    }
    转自:https://www.cnblogs.com/MAOCE/p/13867534.html
  • 相关阅读:
    linux之定时任务
    Linux常用的操作命令
    Nginx|构建简单的文件服务器(mac) 续-FastDFS安装(mac)|文件存储方案
    FastDFS安装(mac)|文件存储方案
    RabbitMQ|异步
    解决win系统下Google浏览器无法进行账户登录和同步的问题|Google浏览器同步
    (admin.E403) A ‘django.template.backends.django.DjangoTemplates’ instance must be configured in TEMPLATES in order to use the admin application.| 使用jinjia2时报错
    django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3. | Django报错
    Django框架的初使用-2
    Linux安装Redis,在测试阶段即make test出现“You need tcl 8.5 or newer in order to run the Redis test”问题解决方案
  • 原文地址:https://www.cnblogs.com/javalinux/p/14819112.html
Copyright © 2011-2022 走看看