人在江湖

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  82 Posts :: 10 Stories :: 169 Comments :: 0 Trackbacks
以前QA做性能测试用手机的秒表,很不方便。前两年为QA做了一个java秒表,记录鼠标两次点击之间的时间差。但是那是基于JInvoke的,JInvoke是收费软件,有试用的时限,用来封装JNI编程的复杂性。最近QA要求我再搞一个完全免费的类似软件。这次用的是jnativehook.
jnativehook可以用来监控键盘和鼠标的事件。底层通过调用不同平台的native code屏蔽了平台相关性。它强大的地方在于,基于jnativehook的软件可以后台运行,没有类似“监控某窗口内键盘/鼠标事件”的限制。
扩展jnativehook的这个小工具可以记录两次鼠标点击之间的时间差,更确切地说,是记录第一次鼠标抬起和第二次鼠标按下的时间差。举一个QA使用的例子,比如在UI上点击一个button,等着执行成功弹出的对话框。QA在点击button时,鼠标一抬起,这个小工具就开始计时,当QA看见对话框时,马上在屏幕任意位置点鼠标,软件就记录了这两次点击之间的时间差。当然,这样做还是不够精确,存在人反应时间的误差。
jnativehook项目的主页在 https://code.google.com/p/jnativehook/
我扩展程序的源代码如下:
import org.jnativehook.GlobalScreen;
import org.jnativehook.NativeHookException;
import org.jnativehook.mouse.NativeMouseEvent;
import org.jnativehook.mouse.NativeMouseInputListener;


public class MouseHook  implements NativeMouseInputListener  {

    static double startPoint = 0.0;
    /**
     * 
@param args
     
*/
    public static void main(String[] args) {
        try {
            GlobalScreen.registerNativeHook();
    }
    catch (NativeHookException ex) {
            System.err.println("There was a problem registering the native hook.");
            System.err.println(ex.getMessage());

            System.exit(1);
    }

    //Construct the example object.
        MouseHook example = new MouseHook();

    //Add the appropriate listeners for the example object.
    GlobalScreen.getInstance().addNativeMouseListener(example);

    }

    @Override
    public void nativeMouseClicked(NativeMouseEvent arg0) {
        // TODO Auto-generated method stub
        
    }

    @Override
    public void nativeMousePressed(NativeMouseEvent arg0) {
        System.out.println((System.currentTimeMillis() - startPoint)/1000);
        
    }

    @Override
    public void nativeMouseReleased(NativeMouseEvent arg0) {
        startPoint = System.currentTimeMillis();        
    }

    @Override
    public void nativeMouseDragged(NativeMouseEvent arg0) {
        // TODO Auto-generated method stub
        
    }

    @Override
    public void nativeMouseMoved(NativeMouseEvent arg0) {
        // TODO Auto-generated method stub
        
    }

}
可以在eclipse里右键点java 项目,在export...里选择Java目录下的Runnable Jar File
假如你保存的jar文件叫mousehook.jar. 可以直接使用java -jar mousehook.jar启动就可以使用了。
posted on 2013-04-04 22:28 人在江湖 阅读(3038) 评论(0)  编辑  收藏 所属分类: java

只有注册用户登录后才能发表评论。


网站导航: