2010-12-04 8 views
4

を計算するシステムのアイドル時間を見つけるためにどのように以下の問題レッグシステムのアイドル時間

に私を助けてくださいは、ユーザーがマウスを移動せずにキーボードに触れることなく、システムのアイドル(すなわち保持時間をcalcuclateすることを意味します)、その間にシステムがアイドル状態であることを確認してください。また、その特定のシステムについて、その日のすべてのアイドル時間の合計でユーザに送るエクセルまたはメールを要求する必要があります。

よろしく、 Chandu。

MouseInfo.getPointerInfo().getLocation() 

この方法を使用するポーリングポインタの位置を保ち、あなたは場所があなたがチェック最後の時間以降に変更されたことを発見した場合、アイドル状態をリセットします。あなたは、ユーザーのマウスがPointerInfoを使用している場所を見つけることができます

+4

私はこれを行うためにJNI/JNAを使うべきだと思います...ウィンドウの場合、GetLastInputInfo(* Xについてはわかりません)を呼び出す必要があります。そして、私は「スイング」はこれと何か関係がないとは思わない。 – khachik

+0

これはhttps://jdic.dev.java.net/incubator/systeminfo/index.htmlと同様のことをする可能性があります。 – khachik

答えて

5

ここに戻って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; 

    } 
} 

またJNAを使用してアイドル時間を検出し、this blog postを見てみましょう。

関連する問題