Comment détecter si le système est inactif sur Windows en utilisant Python (c'est-à-dire sans activité de clavier ou de souris). Cela a déjà été demandé before, mais il ne semble pas y avoir un GetLastInputInfo
dans le module pywin32
.Détection de l'inactivité à l'aide de Python
Répondre
En fait, vous pouvez accéder GetLastInputInfo
via la bibliothèque cytpes
:
import ctypes
GetLastInputInfo = ctypes.windll.User32.GetLastInputInfo # callable function pointer
Cela pourrait ne pas être ce que vous voulez bien, car il ne fournit pas d'informations au ralenti dans l'ensemble du système, mais seulement sur la session qui a appelé la fonction. See MSDN docs.
Vous pouvez également utiliser check if the system is locked ou si l'économiseur d'écran a été démarré.
from ctypes import Structure, windll, c_uint, sizeof, byref
class LASTINPUTINFO(Structure):
_fields_ = [
('cbSize', c_uint),
('dwTime', c_uint),
]
def get_idle_duration():
lastInputInfo = LASTINPUTINFO()
lastInputInfo.cbSize = sizeof(lastInputInfo)
windll.user32.GetLastInputInfo(byref(lastInputInfo))
millis = windll.kernel32.GetTickCount() - lastInputInfo.dwTime
return millis/1000.0
Appelez get_idle_duration()
pour obtenir le temps d'inactivité en secondes.
fonctionne comme un charme – Claudiu
Une autre bibliothèque peut définir 'argtypes',' restype', ou 'errcheck' sur' windll.user32.GetLastInputInfo' d'une manière incompatible, vous devriez donc utiliser votre propre instance 'WinDLL', par ex. 'user32 = WinDLL ('user32', use_last_error = Vrai)'. – eryksun
On dirait GetLastInputInfo
est maintenant disponible en pywin32:
win32api.GetLastInputInfo()
le tour est joué et retourne la tique de la minuterie de la dernière action d'entrée utilisateur.
Voici un exemple programme
import time
import win32api
for i in range(10):
print(win32api.GetLastInputInfo())
time.sleep(1)
Si l'on appuie sur une touche/déplace la souris alors que le script dort, les changements de numéro imprimé.
@ La réponse de FogleBird est plutôt cool et fonctionne, mais pressé je n'étais pas sûr de la façon dont cela fonctionne, donc un petit exemple de test ici. Un thread démarre, à la recherche du dernier temps d'inactivité toutes les 10 secondes. Si un mouvement est effectué dans cette fenêtre de temps, il sera imprimé.
from ctypes import Structure, windll, c_uint, sizeof, byref
import threading
//Print out every n seconds the idle time, when moving mouse, this should be < 10
def printit():
threading.Timer(10.0, printit).start()
print get_idle_duration()
class LASTINPUTINFO(Structure):
_fields_ = [
('cbSize', c_uint),
('dwTime', c_uint),
]
def get_idle_duration():
lastInputInfo = LASTINPUTINFO()
lastInputInfo.cbSize = sizeof(lastInputInfo)
windll.user32.GetLastInputInfo(byref(lastInputInfo))
millis = windll.kernel32.GetTickCount() - lastInputInfo.dwTime
return millis/1000.0
printit()
import win32api
def getIdleTime():
return (win32api.GetTickCount() - win32api.GetLastInputInfo())/1000.0
- 1. structure de données laide à la recherche java
- 2. python ide vs détection de ligne cmd?
- 3. Détection de l'exécution interactive d'un script python dans ipython
- 4. Détection lorsqu'un module Python est déchargé
- 5. Bibliothèque de détection audio Bpm
- 6. Détection de la connexion Bureau à distance
- 7. php détection de chenilles
- 8. Détection de collision XNA
- 9. Détection d'incompatibilité de casse sur le nom de fichier dans Windows (de préférence en utilisant python)?
- 10. Détection de UITableView scrolling
- 11. Détection de la version d'Internet Explorer à l'aide de VB6
- 12. Détection de l'architecture de la CPU à la compilation
- 13. RSA détection du type de fichier pubkey
- 14. Détection d'arrondi à virgule flottante
- 15. Algorithme de détection de codage de caractères
- 16. détection tactile d'affichage de défilement
- 17. Détection de visage + morphing d'image
- 18. Silverlight StackPanel Détection de débordement
- 19. Efficacité de la détection Palindrome
- 20. Détection de mauvaises images jpeg
- 21. Rediriger 301 Le transfert vers l'URL de sortie du nouveau domaine est laide
- 22. Détection de l'image touch (cocos2d)?
- 23. Détection de version avec Silverlight
- 24. Détection de la superposition matérielle
- 25. Détection de l'opération d'arrière-plan
- 26. Détection de capacités iPhone/iPod?
- 27. Détection de son de clap en C#
- 28. Outils de détection de visage recommandés/SDK/etc
- 29. Détection du lecteur de test de flash
- 30. Algorithme de détection de coin pour mobile
Comme il a été demandé avant, pourquoi demandez-vous encore? Que pensez-vous a changé qui donnera une réponse différente? –
Peut-être qu'il y a quelqu'un à l'heure actuelle qui peut y répondre, mais la vieille question est enterrée dans l'âge et l'obscurité. Comment pouvez-vous "bosse" la vieille question de quelqu'un d'autre? –
quand il a été précédemment demandé, la réponse était sur la détection des clics de souris, qui était loin d'être une réponse à cette question! – Badri