使用Python检测空闲时间

39 投票
6 回答
23851 浏览
提问于 2025-04-15 11:50

我想知道怎么用Python检测Windows系统是否处于闲置状态,也就是没有键盘或鼠标的活动。这个问题之前已经有人问过了,可以在这里找到,但是在pywin32模块里似乎没有GetLastInputInfo这个功能。

6 个回答

11

看起来现在在pywin32中可以使用GetLastInputInfo这个功能了:

win32api.GetLastInputInfo()

这个功能可以获取到最后一次用户输入的时间。

这里有一个示例程序:

import time
import win32api
for i in range(10):
   print(win32api.GetLastInputInfo())
   time.sleep(1)

如果在脚本暂停的时候按下一个键或者移动鼠标,打印出来的数字就会变化。

17
import win32api
def getIdleTime():
    return (win32api.GetTickCount() - win32api.GetLastInputInfo()) / 1000.0

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

45
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

调用 get_idle_duration() 来获取空闲时间,单位是秒。

撰写回答