java中模拟鼠标和键盘操作


从jdk1.3开始,提供了一个Robot类,在java.awt.*包下面。这个类在jdk中描述如下:

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

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

注意,某些平台需要特定权限或扩展来访问低级输入控件。如果当前平台配置不允许使用输入控件,那么试图构造 Robot 对象时将抛出 AWTException。例如,如果 X 服务器不支持(或没有启用)XTEST 2.2 标准扩展,则 X-Window 系统会抛出异常。

出于自测试之外的目的而使用 Robot 的应用程序应妥善处理这些错误条件。


这个类除了模拟鼠标键盘操作以外,还可以用来截取屏幕,只演示一下怎么模拟鼠标键盘操作,具体api参考javadoc。这个演示完成了弹出QQ和移动窗口的功能。代码如下:

复制到剪贴板  Java代码
  1. import java.awt.AWTException;   
  2. import java.awt.Robot;   
  3. import java.awt.event.KeyEvent;   
  4. /** *//**  
  5. * @author bean  
  6. *   
  7. */  
  8. public class RobotDemo ...{   
  9.   
  10. private Robot robot = null;   
  11.   
  12. public RobotDemo() ...{   
  13.    try ...{   
  14.     robot = new Robot();   
  15.    } catch (AWTException e) ...{   
  16.     e.printStackTrace();   
  17.    }   
  18. }   
  19. /** *//** 可以弹出QQ */  
  20. public void keyBoardDemo() ...{   
  21.    robot.keyPress(KeyEvent.VK_ALT);   
  22.    robot.keyPress(KeyEvent.VK_CONTROL);   
  23.    robot.keyPress(KeyEvent.VK_Z);   
  24.    robot.keyRelease(KeyEvent.VK_Z);   
  25.    robot.keyRelease(KeyEvent.VK_CONTROL);   
  26.    robot.keyRelease(KeyEvent.VK_ALT);   
  27. }   
  28. /** *//** 前提是有个最大化的窗口,功能是移动到标题栏,然后拖拽到600,600的位置*/  
  29. public void mouseDemo()...{   
  30.    robot.mouseMove(8010);   
  31.    robot.mousePress(KeyEvent.BUTTON1_MASK);   
  32.    try ...{   
  33.     Thread.sleep(20);   
  34.    } catch (InterruptedException e) ...{   
  35.     e.printStackTrace();   
  36.    }   
  37.    robot.mouseMove(600600);   
  38.    robot.mouseRelease(KeyEvent.BUTTON1_MASK);   
  39. }   
  40. /** *//**  
  41.    * @param args  
  42.    */  
  43. public static void main(String[] args) ...{   
  44.    RobotDemo demo=new RobotDemo();   
  45.    demo.keyBoardDemo();   
  46.    demo.mouseDemo();   
  47. }   
  48.   
  49. }  

你可能感兴趣的:(java中模拟鼠标和键盘操作)