Python自动重启pc

时间:2017-06-12 02:32:47

标签: python automation

你好我已经写了一个.pyw脚本来自动重启我的电脑,如果我已经闲置了几秒钟。由于某种原因,脚本只返回idleTime的值0.328而不是实际计算已空闲的秒数。不确定这个问题在哪里,所以这是我的代码

import os
import datetime
from ctypes import Structure, windll, c_uint, sizeof, byref

#Script will automatically restart computer at 4 am unless user 
#hits abort button.

os.system("start C:/Users/alexa/Desktop/test.txt")

#checks how long user has been idle for
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


idleTime = get_idle_duration()

while(idleTime <= 30):
    print(idleTime)
    if(idleTime >= 30):
        os.system("shutdown")

3 个答案:

答案 0 :(得分:2)

您永远不会更新idleTime您设置一次,然后执行while循环....

答案 1 :(得分:1)

正如Pythonista所说,你没有更新python时间,但由于我还没有发表评论,我将解决方案作为新答案包括在内


while(True):
    idleTime = get_idle_duration()
    print(idleTime)
    if(idleTime >= 30):
        os.system("shutdown") 

但是,为了消耗资源,最好导入时间并添加

time.sleep(1)

在while循环结束时所以它只检查一次......

答案 2 :(得分:0)

Pythonista是正确的。你还要返回millis变量除以1000.这将使你的重启执行非常冗长,因为它需要比重启的设置持续时间长1000倍。我建议你在没有分组的情况下测试这个程序,并在5分钟左右尝试一下,看看你得到了什么结果。