Come si rileva se il sistema è inattivo su Windows utilizzando Python (vale a dire senza attività della tastiera o del mouse). Questo è già stato chiesto before, ma non sembra essere un GetLastInputInfo
nel modulo pywin32
.rilevamento del tempo di inattività utilizzando python
risposta
In realtà, è possibile accedere GetLastInputInfo
attraverso il cytpes
libreria:
import ctypes
GetLastInputInfo = ctypes.windll.User32.GetLastInputInfo # callable function pointer
Questo potrebbe non essere ciò che si vuole, però, in quanto non fornisce informazioni di standby in tutto il sistema, ma solo sulla sessione che ha chiamato la funzione. See MSDN docs.
In alternativa, è possibile check if the system is locked o se è stato avviato lo screen-saver.
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
chiamata get_idle_duration()
per ottenere il tempo di inattività in secondi.
Sembra come GetLastInputInfo
è ora disponibile in pywin32:
win32api.GetLastInputInfo()
fa il trucco e restituisce il timer tick dall'azione di ingresso ultimo utente.
Qui con un programma di esempio
import time
import win32api
for i in range(10):
print(win32api.GetLastInputInfo())
time.sleep(1)
Se si preme un tasto/sposta il mouse mentre lo script dorme, i cambiamenti numero stampato.
@ La risposta di FogleBird è piuttosto interessante e funzionante, ma di fretta non ero sicuro di come funzioni, quindi un piccolo esempio di prova qui. Un thread sta iniziando, cercando l'ultimo tempo di inattività ogni 10 secondi. Se viene effettuato un movimento all'interno di questa finestra temporale, verrà stampato.
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. Tempo di inattività applicazione
- 2. WPF: tempo di inattività applicazione
- 3. Tempo di inattività della macchina
- 4. VB Detect Tempo di inattività
- 5. Ottenere inattività/tempo di inattività in un'applicazione WPF
- 6. Tempo di inattività dell'istanza RDS AWS
- 7. Rilevamento del passo in tempo reale utilizzando FFT
- 8. Come si esegue l'elaborazione del tempo di inattività nell'applicazione WPF?
- 9. Ottenere il tempo di inattività del sistema con Qt
- 10. Tempo di inattività durante il ricaricamento del daemon mod_wsgi?
- 11. Inizializzazione applicazione - Tempo di inattività enorme
- 12. Python DST e zona di rilevamento Tempo dopo l'aggiunta
- 13. Pycharm dispone di uno strumento per il rilevamento del tempo
- 14. Determinazione del tempo di una frase Python
- 15. Rilevamento del colore dell'immagine usando python
- 16. Rilevamento inattivo in WPF
- 17. Rilevamento di IE utilizzando jQuery
- 18. Rilevamento di simmetrie in Python
- 19. Rilevamento del tipo di faccia
- 20. Misurazione del tempo trascorso in python
- 21. Rilevamento cambio scena Python
- 22. Rilevamento del blocco dell'applicazione
- 23. crescente memoria del processo python nel tempo
- 24. Tempo di somma Python
- 25. Fallimento dei nodi di rilevamento del quarzo
- 26. rilevamento del movimento VLCj
- 27. Rilevamento dell'altezza dell'area di visualizzazione utilizzando Javascript
- 28. Rilevamento dei membri utilizzando void_t
- 29. Reindirizzamento di inattività Google Chrome
- 30. La complessità del tempo di accesso a un dt Python
Da quando è stato chiesto prima, perché stai chiedendo di nuovo? Cosa pensi sia cambiato che darà una risposta diversa? –
Forse c'è qualcuno in questo momento che può rispondere, ma la vecchia domanda è sepolta nell'età e nell'oscurità. Come puoi "urtare" la vecchia domanda di qualcun altro? –
quando è stato chiesto in precedenza, la risposta era sul rilevamento dei clic del mouse, che non era affatto vicino a una risposta a quella domanda! – Badri