Robot类用于为测试自动化、自运行演示程序和其他需要控制鼠标和键盘的应用程序生成本机系统输入事件。Robot 的主要目的是便于 Java 平台实现自动测试。

使用该类生成输入事件与将事件发送到 AWT 事件队列或 AWT 组件的区别在于:事件是在平台的本机输入队列中生成的。例如,Robot.mouseMove 将实际移动鼠标光标,而不是只生成鼠标移动事件。

我们可以利用这个类写出好多有意思的东西,下面我将详细的这个类的用法。

Robot这个类中的方法并不是很多,常用的有以下几个:

void delay (int ms)  睡眠指定的时间(类似于线程中sleep)

void keyPress(int keycode) 按下指定的键

void keyRelease(int keycode) 释放指定的键

void mouseMove(int x,int y) 将鼠标移动到给定的屏幕坐标上

void mousePress(int buttons) 按下一个或多个鼠标按键

void mouseRelease(int buttons) 释放一个活多个鼠标按键

void mouseWheel(int wheelAmt) 滚动鼠标滑轮

下面看一个自动实现HelloWorld的例子:

public class Main {  private static Robot robot;  public static void main(String[] args) {  try {  robot = new Robot();//创建Robot对象  } catch (Exception e) {  // TODO Auto-generated catch block  e.printStackTrace();  }  //这里是按下和释放alt键,这个键的功能是调用菜单  robot.keyPress(KeyEvent.VK_ALT);  robot.keyRelease(KeyEvent.VK_ALT);  robot.delay(500);//延迟500ms  //这里是按下和释放回车键,用于确定是file选项  robot.keyPress(KeyEvent.VK_ENTER);  robot.keyRelease(KeyEvent.VK_ENTER);  robot.delay(500);  //选择New  robot.keyPress(KeyEvent.VK_ENTER);  robot.keyRelease(KeyEvent.VK_ENTER);  robot.delay(500);  //选择Java Project  robot.keyPress(KeyEvent.VK_ENTER);  robot.keyRelease(KeyEvent.VK_ENTER);  robot.delay(500);  //输入字母a,即工程名  robot.keyPress(KeyEvent.VK_A);  robot.keyRelease(KeyEvent.VK_A);  robot.delay(500);  //回车确定创建工程  robot.keyPress(KeyEvent.VK_ENTER);        robot.keyRelease(KeyEvent.VK_ENTER);          robot.delay(500);         //将鼠标抵用到刚刚建立的工程上面,这个坐标是作者在自己的电脑上实验获得的,在不同的电脑上可能
不一样,可以用  //Point point = MouseInfo.getPointerInfo().getLocation();  //System.out.println(point);来打印当前鼠标的坐标,从而找到对的位置  robot.mouseMove(43, 136);  //按下和释放鼠标左键,选定工程  robot.mousePress(KeyEvent.BUTTON1_MASK);  robot.mouseRelease(KeyEvent.BUTTON1_MASK);  //alt键选择菜单并调出newClass的选项  robot.keyPress(KeyEvent.VK_ALT);  robot.keyRelease(KeyEvent.VK_ALT);  robot.delay(500);  robot.keyPress(KeyEvent.VK_ENTER);  robot.keyRelease(KeyEvent.VK_ENTER);  robot.delay(500);  robot.keyPress(KeyEvent.VK_ENTER);  robot.keyRelease(KeyEvent.VK_ENTER);  robot.delay(500);  robot.keyPress(KeyEvent.VK_DOWN);  robot.keyRelease(KeyEvent.VK_DOWN);  robot.delay(500);  robot.keyPress(KeyEvent.VK_DOWN);  robot.keyRelease(KeyEvent.VK_DOWN);  robot.delay(500);  robot.keyPress(KeyEvent.VK_DOWN);  robot.keyRelease(KeyEvent.VK_DOWN);  robot.delay(500);  robot.keyPress(KeyEvent.VK_ENTER);  robot.keyRelease(KeyEvent.VK_ENTER);  robot.delay(500);  //下面换回小写  //切换成大写  robot.keyPress(KeyEvent.VK_CAPS_LOCK);  robot.keyRelease(KeyEvent.VK_CAPS_LOCK);  robot.delay(500);  robot.keyPress(KeyEvent.VK_H);  robot.keyRelease(KeyEvent.VK_H);  robot.delay(200);  //换回小写  robot.keyPress(KeyEvent.VK_CAPS_LOCK);  robot.keyRelease(KeyEvent.VK_CAPS_LOCK);  robot.delay(200);  robot.keyPress(KeyEvent.VK_E);  robot.keyRelease(KeyEvent.VK_E);  robot.delay(200);  robot.keyPress(KeyEvent.VK_L);  robot.keyRelease(KeyEvent.VK_L);  robot.delay(200);  robot.keyPress(KeyEvent.VK_L);  robot.keyRelease(KeyEvent.VK_L);  robot.delay(200);  robot.keyPress(KeyEvent.VK_O);  robot.keyRelease(KeyEvent.VK_O);  robot.delay(200);  robot.keyPress(KeyEvent.VK_CAPS_LOCK);  robot.keyRelease(KeyEvent.VK_CAPS_LOCK);  robot.delay(200);  robot.keyPress(KeyEvent.VK_W);  robot.keyRelease(KeyEvent.VK_W);  robot.delay(200);  robot.keyPress(KeyEvent.VK_CAPS_LOCK);  robot.keyRelease(KeyEvent.VK_CAPS_LOCK);  robot.delay(200);  robot.keyPress(KeyEvent.VK_O);  robot.keyRelease(KeyEvent.VK_O);  robot.delay(200);  robot.keyPress(KeyEvent.VK_R);  robot.keyRelease(KeyEvent.VK_R);  robot.delay(200);  robot.keyPress(KeyEvent.VK_L);  robot.keyRelease(KeyEvent.VK_L);  robot.delay(200);  robot.keyPress(KeyEvent.VK_D);  robot.keyRelease(KeyEvent.VK_D);  robot.delay(200);  //移动鼠标选择自动穿件main函数  robot.mouseMove(533, 448);  robot.mousePress(KeyEvent.BUTTON1_MASK);  robot.mouseRelease(KeyEvent.BUTTON1_MASK);  robot.delay(500);  //回车创建完成  robot.keyPress(KeyEvent.VK_ENTER);  robot.keyRelease(KeyEvent.VK_ENTER);  robot.delay(500);  //移动光标到输入代码的行上  robot.keyPress(KeyEvent.VK_DOWN);  robot.keyRelease(KeyEvent.VK_DOWN);  robot.delay(500);  robot.keyPress(KeyEvent.VK_DOWN);  robot.keyRelease(KeyEvent.VK_DOWN);  robot.delay(500);  robot.keyPress(KeyEvent.VK_DOWN);  robot.keyRelease(KeyEvent.VK_DOWN);  robot.delay(500);  robot.keyPress(KeyEvent.VK_DOWN);  robot.keyRelease(KeyEvent.VK_DOWN);  robot.delay(500);  robot.keyPress(KeyEvent.VK_DOWN);  robot.keyRelease(KeyEvent.VK_DOWN);  robot.delay(500);  robot.keyPress(KeyEvent.VK_DOWN);  robot.keyRelease(KeyEvent.VK_DOWN);  robot.delay(500);  //输入syso并用alt+/快捷键补全  robot.keyPress(KeyEvent.VK_S);  robot.keyRelease(KeyEvent.VK_S);  robot.delay(200);  robot.keyPress(KeyEvent.VK_Y);  robot.keyRelease(KeyEvent.VK_Y);  robot.delay(200);  robot.keyPress(KeyEvent.VK_S);  robot.keyRelease(KeyEvent.VK_S);  robot.delay(200);  robot.keyPress(KeyEvent.VK_O);  robot.keyRelease(KeyEvent.VK_O);  robot.delay(200);  robot.keyPress(KeyEvent.VK_ALT);  robot.keyPress(KeyEvent.VK_SLASH);  robot.keyRelease(KeyEvent.VK_ALT);  robot.keyRelease(KeyEvent.VK_SLASH);  robot.delay(500);  //输入双引号  robot.keyPress(KeyEvent.VK_SHIFT);  robot.keyPress(KeyEvent.VK_QUOTE);  robot.keyRelease(KeyEvent.VK_SHIFT);  robot.keyRelease(KeyEvent.VK_QUOTE);  //输入HelloWorld  robot.keyPress(KeyEvent.VK_CAPS_LOCK);  robot.keyRelease(KeyEvent.VK_CAPS_LOCK);  robot.delay(500);  robot.keyPress(KeyEvent.VK_H);  robot.keyRelease(KeyEvent.VK_H);  robot.delay(200);  robot.keyPress(KeyEvent.VK_CAPS_LOCK);  robot.keyRelease(KeyEvent.VK_CAPS_LOCK);  robot.delay(200);  robot.keyPress(KeyEvent.VK_E);  robot.keyRelease(KeyEvent.VK_E);  robot.delay(200);  robot.keyPress(KeyEvent.VK_L);  robot.keyRelease(KeyEvent.VK_L);  robot.delay(200);  robot.keyPress(KeyEvent.VK_L);  robot.keyRelease(KeyEvent.VK_L);  robot.delay(200);  robot.keyPress(KeyEvent.VK_O);  robot.keyRelease(KeyEvent.VK_O);  robot.delay(200);  robot.keyPress(KeyEvent.VK_CAPS_LOCK);  robot.keyRelease(KeyEvent.VK_CAPS_LOCK);  robot.delay(200);  robot.keyPress(KeyEvent.VK_W);  robot.keyRelease(KeyEvent.VK_W);  robot.delay(200);  robot.keyPress(KeyEvent.VK_CAPS_LOCK);  robot.keyRelease(KeyEvent.VK_CAPS_LOCK);  robot.delay(200);  robot.keyPress(KeyEvent.VK_O);  robot.keyRelease(KeyEvent.VK_O);  robot.delay(200);  robot.keyPress(KeyEvent.VK_R);  robot.keyRelease(KeyEvent.VK_R);  robot.delay(200);  robot.keyPress(KeyEvent.VK_L);  robot.keyRelease(KeyEvent.VK_L);  robot.delay(200);  robot.keyPress(KeyEvent.VK_D);  robot.keyRelease(KeyEvent.VK_D);  robot.delay(200);  //ctrl+shift+F 格式化  robot.keyPress(KeyEvent.VK_SHIFT);  robot.keyPress(KeyEvent.VK_CONTROL);  robot.keyPress(KeyEvent.VK_F);  robot.keyRelease(KeyEvent.VK_SHIFT);  robot.keyRelease(KeyEvent.VK_CONTROL);  robot.keyRelease(KeyEvent.VK_F);  //ctrl+S保存  robot.keyPress(KeyEvent.VK_CONTROL);  robot.keyPress(KeyEvent.VK_S);  robot.keyRelease(KeyEvent.VK_S);  robot.keyRelease(KeyEvent.VK_CONTROL);  //F11运行  robot.keyPress(KeyEvent.VK_F11);  robot.keyRelease(KeyEvent.VK_F11);        }
}

java Robot 类模拟键盘按键和鼠标点击(全局模拟)相关推荐

  1. 模拟键盘按键、鼠标单击功能发布(可发送快捷键、热键、鼠标左键多次单击)—— 定时执行专家

    目录 ◆ 定时执行专家 -- 模拟键盘按键 ◆ 定时执行专家 -- 模拟鼠标单击 ◆ 定时执行专家 -- 模拟键盘按键 - 设置方法 (1)点击 "定时执行专家" 工具栏 &quo ...

  2. VC+API模拟键盘按键(详解篇)

    模拟键盘按键 ━━━━━━━━━━━━━━━━━━━━━━━━ 以前就想过如何模拟键盘按键向其他程序发送控制命令,但总是无功而返,这次也不例外. 模拟按键的方法很多,如PostMessage(不能用S ...

  3. 模拟键盘按键---很经典,总结很全面

    http://www.cnblogs.com/Jnshushi99/archive/2011/09/03/2164617.html 模拟键盘按键 ━━━━━━━━━━━━━━━━━━━━━━━━ 以前 ...

  4. linux模拟键盘按键方案(收藏)

    linux模拟键盘按键方案(收藏) 在这以前,我一直以为,除非搞X Window级别的开发,否则根本没法在Linux下模拟键盘消息,或者说键盘事件.像QT,GTK这些High Level的GUI li ...

  5. Python——实现网页模拟键盘输入和鼠标点击

    Python--实现网页模拟键盘输入和鼠标点击 一.安装selenium库 1.1 win+R打开输入窗口 1.2 输入cmd,点击确定 1.3 输入代码: 二.以谷歌浏览器为例,配置环境 2.1打开 ...

  6. 模拟键盘按键 自动输入文字

    模拟键盘按键 自动输入文字 键盘对于每个操作电脑的人员来说是最熟悉不过的了.键盘上的按键可分为两类 按下后会在电脑的输入窗口上出现对应字符的按键,如字母键和数字键等,我们称之为字符键:按下后虽然看不到 ...

  7. linux c实现键盘模拟,C++模拟键盘按键的实例

    这个与模拟鼠标点击的函数差不多,直接上函数 keybd_event(VK_RETURN,0,0,0); keybd_event(VK_RETURN,0,KEYEVENTF_KEYUP,0); 这是模拟 ...

  8. golang实现模拟键盘按键

    Go 是一个开源的编程语言,它能让构造简单.可靠且高效的软件变得容易.GO优点 1.学习曲线容易 2.效率:快速的编译时间,开发效率和运行效率高 3.自由高效:组合的思想.无侵入式的接口 4.强大的标 ...

  9. C/C++使用keybd_event模拟键盘按键

    1 #include <stdio.h> 2 #include <Windows.h> 3 4 /* 5 设置键盘大小写状态 6 big:为TRUE则切换大写状态,否则切换小写 ...

最新文章

  1. 微信链接里的图像如何得到更清晰
  2. php获取等于符号后面的参数,php获取URL中带#号等特殊符号参数的解决方法
  3. lua字符串转数组_深入Lua:字符串管理
  4. vs code中使用Astyle排版C/C++代码
  5. html按键清空怎么写_html的空格代码怎么写?教你如何使用空格nbsp代码
  6. key 和secret_Java Secret:加载和卸载静态字段
  7. linux里面i386 i686 i486 i586代表什么?是什么意思
  8. SQLServer 优化SQL语句 in 和not in的替代方案
  9. 设计模式的七大设计原则:其二:接口隔离原则
  10. 智能云端服务器连接不了,智能云解析,智能在哪里?
  11. CF438D The Child and Sequence
  12. Android测试之Robotium自动化测试框架
  13. 李力,王飞跃丨地面交通控制的百年回顾和未来展望
  14. matlab中abs函数,Matlab中的abs函数是什么意思
  15. 如何解决网上图片模糊不清,还原图片清晰度?
  16. uni-app跳转连接到QQ
  17. 配置 sysctl.conf 系统参数详解
  18. VnlnHub Momentum
  19. 美赛经验分享(2020):个人经验/参考文章/资料分享/参赛注意事项/17-19年o奖论文阅读总结分享
  20. 除非p否则q 除非P否则非Q 只有p才q 彻底搞懂离散数学命题符号化的逻辑 附公务员真题讲解

热门文章

  1. python中定义匿名函数的关键字是,Python中的匿名函数
  2. js数组转字符串方法 对象转字符串 字符串转对象
  3. 6年工作经验,却找不到工作,大龄男青年该如何打破就业瓶颈
  4. [Python爬虫] 中文编码问题:raw_input输入、文件读取、变量比较等str、unicode、utf-8转换问题...
  5. centos7升级ssh 到高版本操作
  6. linux内核RCU
  7. 达人评测 i7 12700H和i5 12500h选哪个好
  8. 绝地求生刺激战场模拟器怎么设置操作最流畅?刺激战场灵敏度最佳设置
  9. vs2017 加入GL/gl.h的错误
  10. 网络编程入门(C++)