用户不活动执行功能[关闭]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用户不活动执行功能[关闭]相关的知识,希望对你有一定的参考价值。
在工作中,我们必须进行自己的时间管理,并不时得到控制。因为我总是忘记,当我休息多久时,我决定编写一个在启动时运行的python脚本,并在我没有移动鼠标或键入键盘5分钟后写下当前时间。
import datetime
def writetime():
t = datetime.datetime.now()
with open("C:\\Users\\[USER]\\Desktop\\time.txt", 'a') as f:
f.write('%s \n' % t)
我只是不知道,自上次输入后经过一定时间后如何执行我的函数写入时间。
答案
pynput
看起来可能适合你。 See docs
它会是这样的
from pynput import mouse
with mouse.Listener(on_click=reset_timer,
on_move=reset_timer,
on_scroll=reset_timer) as listener:
begin_timer()
另一答案
另一种方法可能是在5分钟后关闭监视器屏幕(屏幕保护程序选项),然后编写一个检测监视器状态的脚本。
以下是如何执行此操作的示例:How to check whether the device's display is turned on/off with Python?
快乐的编码
另一答案
它可能不是最干净的解决方案,但由于我是一名新手Python程序员,我对它很满意。从ctypes导入日期时间导入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
while 1:
GetLastInputInfo = int(get_idle_duration())
if GetLastInputInfo >= 10:
start = time.time()
startTime = datetime.datetime.now()
while GetLastInputInfo >= 10:
GetLastInputInfo = int(get_idle_duration())
if GetLastInputInfo < 10:
end = time.time()
time_elapsed = end - start + 10
if time_elapsed >= 10:
with open("C:\\Users\\[USER]\\Desktop\\time.txt", 'w') as f:
f.write('Pause from ' + str(startTime) + ' to ' + str(
datetime.datetime.now()) + '\nDuration: ' + str(time_elapsed))
出于测试目的,我将标记为缺席的时间设置为10秒。因此,如果你想做类似的东西,请确保在几秒钟内将所有10个更改为希望的时间
以上是关于用户不活动执行功能[关闭]的主要内容,如果未能解决你的问题,请参考以下文章