C'est une question plutôt délicate car je n'ai trouvé aucune information en ligne. Fondamentalement, je souhaite savoir comment vérifier si un ordinateur est inactif dans Java. Je souhaite qu'un programme ne fonctionne que si l'ordinateur est actif, mais s'il est inactif, alors non. P>
La seule façon dont je peux penser à faire cela est d'accrocher dans la souris / le clavier et d'avoir une minuterie. p>
MSN Messenger a cette fonctionnalité "ALL", je souhaite quelque chose de similaire à celui-ci. P>
5 Réponses :
Rien dans le JRE indépendant de la plate-forme répondra à cette question. Vous pourriez être capable de deviner en mesurant le temps d'horloge pour un calcul, mais cela ne serait pas fiable. Sur des plates-formes spécifiques, il pourrait y avoir des API de fournisseur qui pourraient vous aider. P>
Ce n'est pas tellement de temps de veille du système que j'ai besoin de trouver. J'ai juste besoin de trouver que l'utilisateur utilise un ordinateur à l'intérieur de Say les 10 derniers mins. Fondamentalement. Je souhaite que les notifications ne montrent que si l'utilisateur est réellement sur leur PC.
Je pense que cela est encore plus impossible que l'utilisation du temps de la CPU.
Java n'a aucun moyen d'interagir avec le clavier ou la souris au niveau du système en dehors de votre application. P>
qui étant dit ici sont de plusieurs façons de le faire sous Windows . Le plus facile est probablement de mettre en place JNI et sondage p>
GASTLASTINUTINFO P> blockQuote>
pour l'activité du clavier et de la souris. P>
1) Faites un nouveau fil. P>
2) Donnez-lui une super super faible priorité (le plus bas que vous pouvez) p>
3) Chaque seconde ou deux, faites une tâche simple. Si super rapide, au moins 1 processeur est prolongé au ralenti. Si cela le fait ralentit, au moins 1 noyau ne sont pas inactifs. P>
ou p>
Exécutez votre programme à une priorité faible. Cela permettra au système d'exploitation de laisser d'autres programmes courir sur votre programme. P>
Je ne suis pas un professionnel, mais j'ai une idée:
Vous pouvez utiliser la classe d'informations d'information de la souris de Java pour vérifier la position de la souris aux intervalles de certian disent comme suit: p>
import java.awt.MouseInfo; public class Mouse { public static void main(String[] args) throws InterruptedException{ while(true){ Thread.sleep(100); System.out.println("("+MouseInfo.getPointerInfo().getLocation().x+", "+MouseInfo.getPointerInfo().getLocation().y+")"); } } }
Vous pouvez résoudre ceci à l'aide de la classe de robots de Java. Utilisez la classe de robot pour prendre une capture d'écran, puis attendez que 60 secondes et prennent une autre capture d'écran. Comparez les captures d'écran les unes avec les autres pour voir si des modifications
est arrivé, mais ne comparez pas seulement les captures d'écran Pixel de Pixel. Vérifiez le pourcentage des pixels qui ont changé. La raison en est que vous ne voulez pas de petites différences telles que Windows Clock s'immiscer avec le résultat. Si le pourcentage est inférieur à 0,005% (ou autre), l'ordinateur est probablement ralenti. p>
Mais là encore, pourquoi n'utilisez-t-on que le moniteur de la souris et ne meurt que le reste :)
Je peux imaginer que la souris est oisif pendant longtemps lorsque vous écrivez un essai pour l'école ou le travail;)
Il n'y a pas de manière portable de faire cela. Quels systèmes ciblez-vous? Quelle est votre définition de veille?
Peut-être que vous trouverez une solution dans cette question connexe: Stackoverflow.com/Questtions/614227/...