鼠标模拟和键盘映射测试

鼠标模拟和键盘映射测试

因为毕业设计需要,做了一点点鼠标和键盘模拟的测试,收获了一点关于Robot知识,这是一个非常有趣的类,此类用于测试自动化,自运行演示程序和其他需要控制鼠标和键盘的应用程序生成本机系统输入事件。Robot类主要目的是便于java平台实现自动测试。主要方法如下:动作都在java.awt.event包中的KeyEvent和MouseEvent中定义
  • 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)在配有滚轮的鼠标旋转滚轮
  • BufferedImage createScreenCapture(Rectangle screenRect)创建包含从屏幕中读取的像素的图像
第一个例子是鼠标模拟测试,在多线程中每隔1s随机移动鼠标,一共随机6次鼠标闪烁,源码如下:
/*
 * MouseSimulate.java
 * 
 * Created on 2007-5-7, 4:03:04
 * 
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 
*/

package  cn.edu.yutao;

import  java.awt.AWTException;
import  java.awt.Dimension;
import  java.awt.Robot;
import  java.awt.Toolkit;
import  java.awt.event.InputEvent;
import  java.util.Random;

/**
 *
 * 
@author  Aslan
 
*/
public   class  MouseSimulate  implements  Runnable{
    
    
private   volatile   boolean  isRunning  =   false ;
    
    
private  Robot robot;
    
private  Dimension dim;
    
private  Random random;

    
public  MouseSimulate() {
        random 
=   new  Random();
        dim 
=  Toolkit.getDefaultToolkit().getScreenSize();
        
        
try {
            robot 
=   new  Robot();
        }
catch (AWTException e){
            e.printStackTrace();
        }
    }

    
public   void  run() {
        
while (isRunning){
            
int  x  =  random.nextInt(( int )dim.getWidth());
            
int  y  =  random.nextInt(( int )dim.getHeight());
            System.out.println(
" the mouse located in ( "   +  x  +   " , "   +  y  +   " ) " );
            
            robot.mouseMove(x, y);
            robot.mousePress(InputEvent.BUTTON1_MASK);
            
            
try {
                Thread.sleep(
1000 );
            }
catch (InterruptedException e){
                e.printStackTrace();
            }
        }
    }
    
    
public   synchronized   void  start(){
        isRunning 
=   true ;
    }
    
    
public   synchronized   void  stop(){
        isRunning 
=   false ;
    }
    
    
public   static   void  main(String[] args){
        MouseSimulate test 
=   new  MouseSimulate();
        
        test.start();
        System.out.println(
" -----------time start------------- " );
        Thread thread 
=   new  Thread(test);
        thread.start();
        
        
try {
            Thread.sleep(
10000 );
        }
catch (InterruptedException e){
            e.printStackTrace();
        }
        
        test.stop();
        System.out.println(
" -----------time stop-------------- " );
    }

}

Robot类的方法createScreenCapture可以简单的用于抓取屏幕图片,可以在java应用程序中直接调用该方法抓取屏幕,检测远程电脑屏幕状态,这里参考了java社区的例子,默认构造函数生成后缀为png的文件,可以在第二个构造函数传入其他名称,支持gif和jpg。截图程序源码如下:
/*
 * GuiCamera.java
 * 
 * Created on 2007-5-7, 4:18:46
 * 
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 
*/

package  cn.edu.yutao;

import  java.awt.Dimension;
import  java.awt.Rectangle;
import  java.awt.Robot;
import  java.awt.Toolkit;
import  java.awt.image.BufferedImage;
import  java.io.File;
import  javax.imageio.ImageIO;

/**
 *
 * 
@author  Aslan
 
*/
public   class  GuiCamera {
    
    
private  String fileName;
    
private   final  String defaultFileName  =   " camera " ;
    
    
private  String format;
    
private   final  String defaultFormat  =   " png " ;
    Dimension dim 
=  Toolkit.getDefaultToolkit().getScreenSize();
    

    
public  GuiCamera() {
        
this .fileName  =  defaultFileName;
        
this .format  =  defaultFormat;
    }

    
public  GuiCamera(String fileName, String format) {
        
this .fileName  =  fileName;
        
this .format  =  format;
    }
    
    
public   void  capture()  throws  Exception{
        BufferedImage imageScreen 
=  ( new  Robot()).createScreenCapture( new  Rectangle(( int )dim.getWidth(), ( int )dim.getHeight()));
        String imageName 
=   this .fileName  +   " . "   +   this .format;
        File file 
=   new  File(imageName);
        System.out.println(
" Save file  "   +  imageName);
        ImageIO.write(imageScreen, format, file);
        System.out.println(
" Finished!! " );
    }
    
    
public   static   void  main(String[] args){
        GuiCamera camera 
=   new  GuiCamera( " hello " " jpg " );
        
try {
            camera.capture();
        }
catch (Exception e){
            e.printStackTrace();
        }
    }
    
    

}
以上程序都在mac os 10.4.8下测试,截图为  很漂亮~ 出现警告是因为某些api在jdk6中已经标记为废弃。
鼠标模拟和键盘映射测试_第1张图片

你可能感兴趣的:(鼠标模拟和键盘映射测试)