Reg计算系统空闲时间

时间:2010-12-04 09:13:47

标签: java events swing

请帮我解决以下问题

如何找出系统空闲时间,意味着计算用户保持系统空闲的时间(即不移动鼠标而不触摸键盘)以及系统闲置的时间。我还应该要求excel或邮件以当天的所有空闲时间的总和发送给用户。对于那个特定的系统。

此致 Chandu。

1 个答案:

答案 0 :(得分:5)

您可以找到用户鼠标的使用位置PointerInfo

MouseInfo.getPointerInfo().getLocation()

使用此方法继续轮询指针位置,如果您发现自上次检查后位置已更改,请将空闲时​​间重置为0.以下是一些测试代码:

public static void main(String[] args) throws Exception {

    long idleTime = 0 ;
    long start = System.currentTimeMillis();
    Point currLocation = MouseInfo.getPointerInfo().getLocation();
    while(true){
        Thread.sleep(1000);
        Point newLocation = MouseInfo.getPointerInfo().getLocation();
        if(newLocation.equals(currLocation)){
            //not moved
            idleTime = System.currentTimeMillis() - start;
        }
        else{
            System.out.printf("Idle time was: %s ms", idleTime);
            idleTime=0;
            start =  System.currentTimeMillis();
            break;
        }
        currLocation = newLocation;

    }
}

另请查看this blog post,它使用JNA检测空闲时间。