import time
import pyautogui
import ctypes
import sys
import keyboard # ודא שהספרייה מותקנת
# פונקציה לנעילת המחשב (עובד רק על Windows)
def lock_screen():
try:
if sys.platform == "win32":
ctypes.windll.user32.LockWorkStation()
print("המחשב ננעל.")
else:
print("פונקציית נעילת המסך נתמכת רק ב-Windows.")
except Exception as e:
print(f"שגיאה בנעילת המחשב: {e}")
# פונקציה לבדוק אם המחשב נעול
def is_computer_locked():
user32 = ctypes.windll.User32
foreground_window = user32.GetForegroundWindow()
# אם החלון הפעיל הוא חלון הכניסה, המחשב נעול
if foreground_window == 0:
print("המחשב נמצא במצב נעול.")
return True
print("המחשב פתוח.")
return False
# פונקציה לבדוק את מיקום העכבר הנוכחי
def get_mouse_position():
try:
return pyautogui.position()
except Exception as e:
print(f"שגיאה בקריאת מיקום העכבר: {e}")
return None # מחזיר None במקרה של שגיאה
# משתנה גלובלי שיעקוב אחרי פעילות המקלדת
keyboard_active = False
# פונקציה שתזהה פעילות מקלדת
def on_keyboard_event(event):
global keyboard_active
keyboard_active = True
print(f"הוקשה מקש: {event.name}")
# זמן ללא שימוש (בשניות)
IDLE_TIME = 24
# לולאה עוקבת אחרי פעילות העכבר והמקלדת
def main_loop():
global keyboard_active
last_position = get_mouse_position()
if last_position is None:
print("שגיאה: לא ניתן לקבל את מיקום העכבר. יציאה מהתוכנית.")
sys.exit(1) # יציאה מהתוכנית במקרה של שגיאה
idle_start_time = time.time()
# התחלת מעקב אחרי פעילות המקלדת
keyboard.hook(on_keyboard_event)
try:
while True:
# בדוק אם המחשב נעול
if is_computer_locked():
print("המחשב נעול. ממתין לפתיחה...")
while is_computer_locked():
time.sleep(5) # המתן עד שהמחשב ייפתח
print("המחשב נפתח. ממשיך לבדוק פעילות...")
current_position = get_mouse_position()
if current_position is None:
print("שגיאה: לא ניתן לקבל את מיקום העכבר. ממשיך לבדוק...")
else:
# הדפס את מיקום העכבר הנוכחי
print(f"מיקום העכבר הנוכחי: {current_position}")
# בדוק אם העכבר או המקלדת לא בשימוש
mouse_active = current_position != last_position
if not (mouse_active or keyboard_active):
# אם אף אחד מהם לא פעיל
if time.time() - idle_start_time >= IDLE_TIME:
lock_screen()
# לאחר הנעילה, המתן שהמחשב ייפתח ואז אפס את הזמן
while is_computer_locked():
time.sleep(5) # המתנה כל 5 שניות לבדוק אם המחשב עדיין נעול
idle_start_time = time.time() # אפס את זמן חוסר השימוש לאחר הפתיחה
else:
# אם יש פעילות, עדכן את המיקום ואת הזמן
if mouse_active:
last_position = current_position
print("העכבר זז. מאפס את זמן חוסר השימוש.")
if keyboard_active:
print("המקלדת בשימוש. מאפס את זמן חוסר השימוש.")
idle_start_time = time.time() # אפס את זמן חוסר השימוש
keyboard_active = False # מאפס את פעילות המקלדת אחרי הפעולה
# השהייה קצרה לפני הבדיקה הבאה
time.sleep(1)
except KeyboardInterrupt:
print("המשתמש ביטל את התוכנית.")
except Exception as e:
print(f"שגיאה כללית: {e}")
if __name__ == "__main__":
main_loop()