Here my code:
from ctypes import byref, c_uint, c_ulong, sizeof, Structure, windll
import ctypes
import random
import sys
import time
import win32api
class LASTINPUTINFO(Structure):
"""Мы импортировали необходимые модули и создали структуру LASTINPUTINFO
для хранения временной метки (в миллисекундах), обозначающей момент
обнаружения последнего события ввода в системе. """
fields_ = [
('cbSize', ctypes.c_uint),
('dwTime', ctypes.c_ulong)
]
def get_last_input():
"""Дальше создаем функцию get_last_input, чтобы, собственно, определить этот момент."""
struct_lastinputinfo = LASTINPUTINFO()
# Обратите
# внимание на то, что прежде чем выполнять вызов, переменную cbSize
# нужно инициализировать с использованием размера структуры.
struct_lastinputinfo.cbSize = sizeof(LASTINPUTINFO) #
# Затем мы
# вызываем функцию GetLastInputInfo, которая присваивает полю struct_
# lastinputinfo.dwTime временную метку.
windll.user32.GetLastInputInfo(byref(struct_lastinputinfo))
# Следующий шаг состоит в определении того,
# как долго проработала система. Для этого применяется вызов
# функции GetTickCount .
run_time = windll.kernel32.GetTickCount() #
# Переменная elapsed должна быть равна разности
# между временем работы системы и временем последнего ввода.
elapsed = run_time - struct_lastinputinfo.dwTime
print(f"[*] It's been {elapsed} milliseconds since the last event.")
return elapsed
# Небольшой
# фрагмент кода, размещенный в конце , позволяет выполнить простую проверку
while True: #
get_last_input()
time.sleep(1)
But I get this error:
Traceback (most recent call last): File "C:\Users\user\PycharmProjects\sandbox_detected\sandbox_detect.py", line 49, in get_last_input() File "C:\Users\user\PycharmProjects\sandbox_detected\sandbox_detect.py", line 41, in get_last_input elapsed = run_time - struct_lastinputinfo.dwTime AttributeError: 'LASTINPUTINFO' object has no attribute 'dwTime'
Help me please.
UPD:
@MegaEmailman Thank you, the code now does not throw exceptions, but it is not clear why it does not work correctly and displays only this:
[*] It's been 0 milliseconds since the last event.
[*] It's been 0 milliseconds since the last event.
[*] It's been 0 milliseconds since the last event.
[*] It's been 0 milliseconds since the last event.
[*] It's been 0 milliseconds since the last event.
[*] It's been 0 milliseconds since the last event.