鼠标模拟和键盘映射测试

因为毕业设计需要,做了一点点鼠标和键盘模拟的测试,收获了一点关于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下测试 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值