2017-06-12 67 views
1

こんにちはすべて私はx秒間アイドル状態になっていると自動的にコンピュータを再起動する.pywスクリプトを書いています。何らかの理由で、スクリプトは実際にアイドル状態の秒数を実際にカウントするのではなく、idleTimeの値0.328を返します。本当にこの問題はので、ここでどこにあるか確認してください私のコードはPython自動PC再起動

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") 

答えて

2

であるあなたは、あなたが一度それを設定し、whileループを実行idleTimeを更新したことがないではない....

0

Pythonistaは正しいです。またmillis変数を1000で割った値を戻しています。これにより、再起動の設定時間が1000倍以上長くなるため、再起動が非常に長くなります。私はあなたが帰りに分裂なしでこのプログラムをテストし、約5分何かを試し、あなたが結果として得るものを見ることをお勧めします。 Pythonistaで言ったように、私はまだしかし、時間をインポートして追加することをお勧めしリソースを消費するために、新しい答えとして


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

を、私は解決策を含めていますコメントを投稿カント以来

1

、あなたはPythonの時刻を更新されていませんが、 whileループの終わりに

time.sleep(1) 

それは一度だけ第二チェックよう...

関連する問題