用户不活动执行功能[关闭]

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个更改为希望的时间

以上是关于用户不活动执行功能[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Swift TableView Cell - 显示活动微调器,执行功能,隐藏活动微调器

在 github 中查看用户的全部活动 [关闭]

用户不活动注销 PHP

如何在另一个活动中执行课程

什么 PHP 脚本将执行此功能:[关闭]

为啥我必须执行两次按钮功能才能使我的逻辑正常工作?