你好我已经写了一个.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")
答案 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分钟左右尝试一下,看看你得到了什么结果。