Если монитор не гаснет через установленное время после блокировки ПК Windows

29 ноября 2024

Для решения этой задачи можно использовать язык программирования Python. Программа будет работать следующим образом:

  1. Отслеживает, заблокирована ли система (Windows).
  2. Проверяет, прошло ли 15 минут после блокировки.
  3. Если мониторы всё ещё включены, выключает их.

Необходимые библиотеки

  • ctypes — для управления монитором.
  • pygetwindow (или аналог) — для проверки состояния заблокированности окна.
  • time — для таймеров и ожиданий.

Код программы

import ctypes
import time
import os

# Функция для выключения мониторов
def turn_off_monitors():
    ctypes.windll.user32.SendMessageW(0xFFFF, 0x112, 0xF170, 2)

# Функция для проверки блокировки системы
def is_system_locked():
    user32 = ctypes.windll.user32
    hdesktop = user32.OpenDesktopW("Default", 0, False, 0x100)
    is_locked = user32.SwitchDesktop(hdesktop) == 0
    user32.CloseDesktop(hdesktop)
    return is_locked

def main():
    locked_time = None  # Время блокировки системы
    
    while True:
        if is_system_locked():
            if locked_time is None:
                locked_time = time.time()  # Устанавливаем время блокировки
            
            # Если прошло более 15 минут с блокировки
            if time.time() - locked_time > 15 * 60:
                turn_off_monitors()
                print("Мониторы выключены")
                locked_time = None  # Сброс времени блокировки после выключения
        else:
            locked_time = None  # Если система разблокирована, сбрасываем таймер

        time.sleep(10)  # Проверяем каждые 10 секунд

if __name__ == "__main__":
    main()

Пояснение

  1. Функция turn_off_monitors: Использует WinAPI для выключения мониторов.
  2. Функция is_system_locked: Проверяет, заблокирована ли система, через десктопный контекст Windows.
  3. Основной цикл main:

    • Если система заблокирована, фиксирует время.
    • Если прошло более 15 минут, выключает мониторы.
    • Если система разблокирована, сбрасывает таймер.

Как использовать

  1. Убедитесь, что у вас установлен Python.
  2. Сохраните код в файл, например monitor_off.py.
  3. Запустите программу, используя python monitor_off.py.

Автозапуск программы

Для автоматического запуска при старте системы:

  1. Создайте ярлык для скрипта.
  2. Поместите ярлык в папку автозагрузки (Win + R -> shell:startup).

Если нужны уточнения или дополнительные функции, дайте знать!