2010-12-04 24 views
4

S'il vous plaît aidez-moi sur le problème ci-dessousReg système de calcul du temps de repos

Comment trouver le temps d'inactivité système, des moyens pour calcuclate moment où l'utilisateur maintient le système de ralenti (sans déplacer la souris et sans toucher le clavier) et entre lequel le système est inactif. Aussi, je devrais exiger un Excel ou un courrier à envoyer à l'utilisateur avec la somme de tous les temps d'inactivité pour ce jour & pour ce système particulier.

Cordialement, Chandu.

+4

Je pense que vous devriez utiliser JNI/JNA pour faire cela ... Pour Windows, vous devriez appeler 'GetLastInputInfo' (pas sûr de * X). Et je ne pense pas que «swing» ait quelque chose à voir avec ça. – khachik

+0

Cela pourrait faire quelque chose de similaire https://jdic.dev.java.net/incubator/systeminfo/index.html – khachik

Répondre

5

Vous pouvez savoir où la souris de l'utilisateur utilise PointerInfo:

MouseInfo.getPointerInfo().getLocation() 

Gardez polling l'emplacement du pointeur utiliser cette méthode et si vous trouvez que l'emplacement a changé depuis la dernière fois que vous avez coché, réinitialiser le ralenti temps à 0. Voici un code de test:

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; 

    } 
} 

Jetez aussi un coup d'œil à this blog post, qui détecte le temps d'inactivité à l'aide de la JNA.