Рубрики
Без рубрики

Python: как сказать, как длинные окна простаиваются

Получите практические, реальные навыки Python на наших ресурсах и пути

Автор оригинала: Mike Driscoll.

На днях я получил запрос на создание сценария, который мог бы сказать, как долго Windows XP был простаивается и предупредить пользователя, если он был простаил в течение определенного времени. Я сделал небольшое исследование с Google и нашел пару способов достичь этого подвига. Единственный, кто мне удалось работать, был пример CTYPES, поэтому без дальнейшего ADO давайте проверим это!

Следующие CTYPES, связанный с кодом из A Форум форума Stackoverflow :

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

# http://stackoverflow.com/questions/911856/detecting-idle-time-in-python
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

Если вы не понимаете код выше, пожалуйста, попросите помощь в списке рассылки CTYPES. Я тоже не понимаю все это. Я получаю основной цист, но вот и все. Вот фрагмент, который я использую, чтобы сделать код выше, сделай это:

while 1:
    GetLastInputInfo = int(get_idle_duration())
    print GetLastInputInfo
    if GetLastInputInfo == 480:
        # if GetLastInputInfo is 8 minutes, play a sound
        sound = r"c:\windows\media\notify.wav"
        winsound.PlaySound(sound, winsound.SND_FILENAME)
    if GetLastInputInfo == 560:
        # if GetLastInputInfo is 9 minutes, play a more annoying sound
        sound = r"c:\windows\media\ringout.wav"
        winsound.PlaySound(sound, winsound.SND_FILENAME)
        winsound.PlaySound(sound, winsound.SND_FILENAME)
        winsound.PlaySound(sound, winsound.SND_FILENAME)
        
    time.sleep(1)

В моем коде я проверяю, был ли машина простоя в течение 8 минут и 9 минут. В зависимости от того, как долго он простаивает, код играет определенный файл WAV с модулем WinSound Python. В нашем магазине у нас есть определенные машины зафиксируют себя, если они простаивались в течение 10 минут. Наши пользователи не любят это слишком много, поэтому они просили, чтобы мы предупреждаем их со звуком, когда машина собиралась заблокировать. Это то, что этот скрипт достигает. Надеюсь, вы можете найти лучшее использование для этого знания.