Java 罗布ot应用示范之机器人作用,javarobot

Java 罗布ot应用示范之机器人成效,javarobot

众多时候,咱们期望能够落实自动测量检验,自动演示功能,大概是其余的一些鼠标和键盘调控的使用(比方帮人点击广告赚收益等)。出于那样的目标,自从JDK1.3方始,它就为我们提供了一个用来发出本机输入事件的机器人类
— java.awt.罗布ot. 

  上边小编来详细介绍罗布ot的职能及应用示范:

一、罗布ot首要的功能

  1. BufferedImage createScreenCapture(Rectangle screenRect) 

证实:该措施提供类似于键盘上的PrintScreen键的意义,将钦命矩形区域内的显示屏像素copy下来发生贰个BufferedImage。
行使:大家得以将这一个艺术用在图纸程序中,或是用它来达成远端显示器传输,可做成远端计算机监察和控制程序等.

  1. void delay(int ms)

注脚:用来将日前的主次(thread)休眠(sleep)若干皮秒(ms)。
使用:可用来支配程序的延时。这一个貌似是必须的,因为您在五遍间隔操作中必定有延时。

  1. Color getPixelColor(int x, int y)

证实:猎取给定显示屏坐标像素地点的颜色值。
动用:正是取颜色兰德酷路泽GB值,就非常少说了。

  1. void keyPress(int keycode)
     void keyRelease(int keycode)

表明:那四个方法的成效一看便知,用来发出钦命键的按钮按下与抬起动作,相当于Win32
API的keyb_event函数,即效仿键盘操作咯,具体keycode值正是Key伊芙nt.VK_C、KeyEvent.VK_D、KeyEvent.VK_CONTROL什么的,具体行使时平素看Eclipse提示就精晓了。
使用:可用于程序的机动演示、测量试验等,特别有效。

  1. void mouseMove(int x, int y)

证实:将鼠标光标移动到钦赐的荧屏坐标。
运用:可用以程序的全自动演示、测量检验等,合营别的的章程应用,是不足缺点和失误的。

  1. void mousePress(int buttons)
     void mouseRelease(int buttons)
     void mouseWheel(int wheelAmt)

表达:下边包车型大巴三种方式,发生内定鼠标按键的按下,抬起,及滚轮动作,正是仿照鼠标操作咯,具体buttons的值有Input伊夫nt.BUTTON1_MASK(鼠标左键)、InputEvent.BUTTON3_MASK(鼠标右键,倘诺是双键鼠标,请改用InputEvent.BUTTON2_MASK)等。

应用:同样也可用来程序的电动演示、测量检验等,合营其余办法应用,非常重大。

二、应用实例

本人写了多少个不大的采纳实例,三个是简轻松单的模仿测验,一个是机动点击广告赚利益的,上边分别演示。

第一编写一些公用的形式Common.java

package com.alexia; 

import java.awt.Rectangle; 
import java.awt.Robot; 
import java.awt.Toolkit; 
import java.awt.event.InputEvent; 
import java.awt.event.KeyEvent; 
import java.awt.image.BufferedImage; 

import javax.swing.Icon; 
import javax.swing.ImageIcon; 

/** 
 * @description Robot帮助类,实现基本的功能 
 * @author Alexia 
 * @date 2013/5/18 
 * 
 */ 
public class Common { 

  /** 
   * 鼠标单击(左击),要双击就连续调用 
   * 
   * @param r 
   * @param x 
   *      x坐标位置 
   * @param y 
   *      y坐标位置 
   * @param delay 
   *      该操作后的延迟时间 
   */ 
  public static void clickLMouse(Robot r, int x, int y, int delay) { 
    r.mouseMove(x, y); 
    r.mousePress(InputEvent.BUTTON1_MASK); 
    r.delay(10); 
    r.mouseRelease(InputEvent.BUTTON1_MASK); 
    r.delay(delay); 

  } 

  /** 
   * 鼠标右击,要双击就连续调用 
   * 
   * @param r 
   * @param x 
   *      x坐标位置 
   * @param y 
   *      y坐标位置 
   * @param delay 
   *      该操作后的延迟时间 
   */ 
  public static void clickRMouse(Robot r, int x, int y, int delay) { 
    r.mouseMove(x, y); 
    r.mousePress(InputEvent.BUTTON3_MASK); 
    r.delay(10); 
    r.mouseRelease(InputEvent.BUTTON3_MASK); 
    r.delay(delay); 

  } 

  /** 
   * 键盘输入(一次只能输入一个字符) 
   * 
   * @param r 
   * @param ks 
   *      键盘输入的字符数组 
   * @param delay 
   *      输入一个键后的延迟时间 
   */ 
  public static void pressKeys(Robot r, int[] ks, int delay) { 
    for (int i = 0; i < ks.length; i++) { 
      r.keyPress(ks[i]); 
      r.delay(10); 
      r.keyRelease(ks[i]); 
      r.delay(delay); 
    } 
  } 

  /** 
   * 复制 
   * 
   * @param r 
   * @throws InterruptedException 
   */ 
  void doCopy(Robot r) throws InterruptedException { 
    Thread.sleep(3000); 
    r.setAutoDelay(200); 
    r.keyPress(KeyEvent.VK_CONTROL); 
    r.keyPress(KeyEvent.VK_C); 
    r.keyRelease(KeyEvent.VK_CONTROL); 
    r.keyRelease(KeyEvent.VK_C); 
  } 

  /** 
   * 粘贴 
   * 
   * @param r 
   * @throws InterruptedException 
   */ 
  void doParse(Robot r) throws InterruptedException { 
    r.setAutoDelay(500); 
    Thread.sleep(2000); 
    r.mouseMove(300, 300); 
    r.mousePress(InputEvent.BUTTON1_MASK); 
    r.mouseRelease(InputEvent.BUTTON1_MASK); 
    r.keyPress(KeyEvent.VK_CONTROL); 
    r.keyPress(KeyEvent.VK_V); 
    r.keyRelease(KeyEvent.VK_CONTROL); 
    r.keyRelease(KeyEvent.VK_V); 
  } 

  /** 
   * 捕捉全屏慕 
   * 
   * @param r 
   * @return 
   */ 
  public Icon captureFullScreen(Robot r) { 
    BufferedImage fullScreenImage = r.createScreenCapture(new Rectangle( 
        Toolkit.getDefaultToolkit().getScreenSize())); 
    ImageIcon icon = new ImageIcon(fullScreenImage); 
    return icon; 
  } 

  /** 
   * 捕捉屏幕的一个矫形区域 
   * 
   * @param r 
   * @param x 
   *      x坐标位置 
   * @param y 
   *      y坐标位置 
   * @param width 
   *      矩形的宽 
   * @param height 
   *      矩形的高 
   * @return 
   */ 
  public Icon capturePartScreen(Robot r, int x, int y, int width, int height) { 
    r.mouseMove(x, y); 
    BufferedImage fullScreenImage = r.createScreenCapture(new Rectangle( 
        width, height)); 
    ImageIcon icon = new ImageIcon(fullScreenImage); 
    return icon; 
  } 

} 

在示范从前,注意显示屏坐标地方怎么规定,笔者是下载了二个小工具,用起来特别便于,建议大家利用

  1. 简言之的效仿测量检验

    package com.alexia;

    import java.awt.;
    import java.awt.event.
    ;
    import javax.swing.JOptionPane;

    public class SimpleTest {

    public static void main(String[] args) throws Exception {

     final Robot rb = new Robot(); 
    
     new Thread() { 
       public void run() { 
         rb.delay(2000); // 模拟回车 
         rb.keyPress(KeyEvent.VK_ENTER); 
         rb.keyRelease(KeyEvent.VK_ENTER); 
       } 
     }.start(); 
    
     rb.delay(3000); 
    
     // 设置开始菜单的大概位置 
     int x = 40; 
     int y = Toolkit.getDefaultToolkit().getScreenSize().height - 10; // 鼠标移动到开始菜单, 
     rb.mouseMove(x, y); 
     rb.delay(500); 
    
     // 单击开始菜单 
     Common.clickLMouse(rb, x, y, 500); 
    
     rb.delay(1000); 
    
     // 运行CMD命令cmd enter 
     int[] ks = { KeyEvent.VK_C, KeyEvent.VK_M, 
         KeyEvent.VK_D, KeyEvent.VK_ENTER, }; 
     Common.pressKeys(rb, ks, 500); 
     rb.mouseMove(400, 400); 
     rb.delay(500); 
    
     // 运行DIR命令dir enter 
     ks = new int[] { KeyEvent.VK_D, KeyEvent.VK_I, KeyEvent.VK_R, 
         KeyEvent.VK_ENTER }; 
     Common.pressKeys(rb, ks, 500); 
     rb.delay(1000); 
    
     // 运行CLS命令cls enter 
     ks = new int[] { KeyEvent.VK_C, KeyEvent.VK_L, KeyEvent.VK_S, 
         KeyEvent.VK_ENTER }; 
     Common.pressKeys(rb, ks, 500); 
     rb.delay(1000); 
    
     // 运行EXIT命令exit enter 
     ks = new int[] { KeyEvent.VK_E, KeyEvent.VK_X, KeyEvent.VK_I, 
         KeyEvent.VK_T, KeyEvent.VK_ENTER }; 
     Common.pressKeys(rb, ks, 500); 
     rb.delay(1000); 
    
     // 右键测试 
     x = Toolkit.getDefaultToolkit().getScreenSize().width - 50; 
     Common.clickRMouse(rb, x, y, 500); 
    
     new Thread() { 
       public void run() { 
         rb.delay(1000); // 回车 
         rb.keyPress(KeyEvent.VK_ENTER); 
         rb.keyRelease(KeyEvent.VK_ENTER); 
       } 
     }.start(); 
    
     JOptionPane.showMessageDialog(null, "演示完毕!"); 
    

    }
    }

  2. 点击和讯广告猎取微薄收益

    package com.alexia;

    import java.awt.AWTException;
    import java.awt.Desktop;
    import java.awt.Robot;
    import java.awt.event.KeyEvent;
    import java.io.IOException;
    import java.net.URI;
    import java.util.Random;

    public class AutoClickAds {

    private Robot robot;

    private volatile boolean stop = false;

    /* Creates a new instance of Main /

    public AutoClickAds() {

     try { 
    
       robot = new Robot(); 
    
     } catch (AWTException ex) { 
    
       ex.printStackTrace(); 
    
     } 
    

    }

    public void init() {

     robot.delay(3000); 
    
     System.out.println("Click Ads start"); 
    
     // 在新的浏览器窗口或在已有的浏览器窗口打开指定的URL(JDK 1.6以上) 
     Desktop desktop = Desktop.getDesktop(); 
     if (Desktop.isDesktopSupported() && desktop.isSupported(Desktop.Action.BROWSE)) { 
       URI uri = URI.create("http://lanxuezaipiao.blog.163.com/"); 
       try { 
         desktop.browse(uri); 
       } catch (IOException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
       } 
     } 
    
     try { 
       run(); 
     } catch (InterruptedException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
     } 
    
     stop(); 
    
     System.out.println("Click Ads stoped"); 
    

    }

    public void run() throws InterruptedException {

     int count = 1; 
    
     while (!stop) { 
       robot.delay(8000); 
    
       int x = 576; 
       int y = 567; 
       Random r = new Random(); 
    
       Common.clickLMouse(robot, x, y, 3000); 
    
       // 输入向下箭头,实现翻页 
       int[] ks = { KeyEvent.VK_DOWN }; 
       for (int i = 0; i < 10; i++) 
         Common.pressKeys(robot, ks, 0); 
    
       int[][] a = { { 500, 103 }, { 500, 163 }, { 500, 223 }, 
           { 500, 283 }, { 500, 343 }, { 500, 403 }, { 500, 463 }, 
           { 500, 523 }, { 500, 583 }, { 500, 643 }, }; 
       int b = r.nextInt(5); 
       x = a[b][0]; 
       y = a[b][1]; 
    
       Common.clickLMouse(robot, x, y, 1000); 
    
       // 输入向下箭头,实现翻页 
       for (int i = 0; i < 500; i++) 
         Common.pressKeys(robot, ks, 0); 
    
       // 输入向下箭头,实现翻页 
       int[] kups = { KeyEvent.VK_UP }; 
       for (int i = 0; i < 3; i++) 
         Common.pressKeys(robot, kups, 0); 
    
       x = 900; 
       y = 210; 
       Common.clickLMouse(robot, x, y, 3000); 
    
       x =1090; 
       y =15; 
       Common.clickLMouse(robot, x, y, 3000); 
    
       x = 900; 
       y = 135; 
       Common.clickLMouse(robot, x, y, 3000); 
    
       System.out.println("成功点击第" + count + "个广告!"); 
     } 
    

    }

    public synchronized void stop() {

     stop = true; 
    

    }

    /**

    * * @param args the command line arguments 
    * 
    * @throws InterruptedException 
    */ 
    

    public static void main(String[] args) throws InterruptedException {

     AutoClickAds mc = new AutoClickAds(); 
     mc.init(); 
    

    }
    }

上述正是本文的全部内容,希望对大家的求学抱有帮忙,也愿意大家多多帮助帮客之家。

http://www.bkjia.com/Javabc/1301081.htmlwww.bkjia.comtruehttp://www.bkjia.com/Javabc/1301081.htmlTechArticleJava 罗布ot应用示范之机器人功效,javarobot
非常多时候,大家目的在于能够达成自动测量检验,自动演示效用,恐怕是其余的片段鼠标和键盘调节的应用…

很欢乐终于把大约具有图灵机器人的机能都集成进了自己的大伙儿号『宝哥bob』中了。最近,它的严重性功用有:聊天、查天气、查快递、看音信、搜图片、讲传说、讲笑话、总括器、查百科、查美食指南、查航班、查列车、查星座、查日期、成语接龙等等。


哪些与图灵机器人对话

在『宝哥bob』公众号聊天窗口中,假若直白发送消息,暗许是发到宝哥后台,那时你会吸收接纳后台的活动回复:

图片 1

宝哥bob自动回复

你必要切换来机器人对话形式技巧与图灵机器人对话,发送@机器人(或者@robot)就足以进来与图灵机器人的对话情势了,前边发送的新闻默许都以与它对话,直到你发送@exit就可以退出。

图片 2

进去图灵机器人对话形式

注意:假如您2分钟内都并未有再与它发送消息举行交互,它会自行退出机器人对话情势。


上边小编把部分常用的效果与利益的运用演示一下:

聊天

这是最主旨的效应,你能够给它发送率性的信息跟它聊,它会没完没了的东山再起你,so
easy~ 完全不会累。

图片 3

与图灵机器人聊天

查天气

查天气有一点个姿态,发送『城市』+天气(比如上海天气),它就能够一贯把天气音信以美貌的列表输出来,大概您头阵天气,然后它会“调皮”的问您在哪儿,你再告诉它你所在的城邑,它也会以一样的花样输出来。

图片 4

用图灵机器人查询气候

瞩目,列表的首先条有大图的是足以点击的,能够进去看越多实际情况,其余条约只用来展示天气音讯,并无法点的。

查菜谱

与查气候类似 ,发送『菜名』+菜谱(比如红烧肉菜谱),就有了~

图片 5

用图灵机器人查美食指南

菜单列表的每一条都以足以点进去查看详细配料和做法滴

查快递

查快递同样有三种姿势,直接查快递+[快递号],或许首发查快递再发快递号。

图片 6

用图灵机器人查快递

看新闻

直接发新闻二字,就有个整齐的新闻列表粗来了。每条都可点击看详细的情况哦。

图片 7

用图灵机器人看资源信息

讲故事

你可发通过不停的出殡讲故事或者讲个故事,来让它不唯有的给你回新的传说,它不会感到累,但不常会“调皮”。。。

图片 8

让图灵机器人讲传说

讲笑话

与讲传说类似,能够不停的让它讲笑话

图片 9

用图灵机器人讲笑话

搜图片

发送关键字+图片(比如美女图片抓狂图片),即会为你寻觅相关图片。结果是如此的:

图片 10

用图灵机器人寻觅图片

鉴于图片太多,要求点进去技术见到图片结果。

查日期

可以以种种姿势查日期哦,查阴历、节日完全无庸赘述,看下图:

图片 11

用图灵机器人查日期

计算器

输入随机数学表达式,它会给您输出结果,像这么:

图片 12

用图灵机器人总计

查百科

基于自个儿的经历,一般关键字+介绍,它会比较正面包车型大巴帮您“介绍”你想清楚的百科知识,不经常候也会顽皮。新的架子等您来发掘喽。

图片 13

用图灵机器人查百科知识

查航班/列车

查询航班要么列车,一般都以查询某月某日航班/某月某日列车查询那般姿势来的,一样,查看结果要点进去看。

图片 14

用图灵机器人查航班和列车

成语接龙

其一意义。。。。呃。。玩玩就好。

图片 15

跟图灵机器人玩成语接龙

查星座

其一背着了,不驾驭确切姿势是甚,小编正是这般玩的:

图片 16

用图灵机器人查星座

查吉凶

最后介绍个自甲寅有列到菜单里的作用,笔者认为没啥意思。

图片 17

用图灵机器人查吉凶

越来越多职能敬请期待(和发掘)


当然,不管怎样,你首先得先关切『宝哥bob』:

图片 18

宝哥bob微信大伙儿号二维码

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图