Для решения этой задачи можно использовать язык программирования Python. Программа будет работать следующим образом:
- Отслеживает, заблокирована ли система (Windows).
- Проверяет, прошло ли 15 минут после блокировки.
- Если мониторы всё ещё включены, выключает их.
Необходимые библиотеки
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()
Пояснение
- Функция
turn_off_monitors
: Использует WinAPI для выключения мониторов. - Функция
is_system_locked
: Проверяет, заблокирована ли система, через десктопный контекст Windows. - Основной цикл
main
:- Если система заблокирована, фиксирует время.
- Если прошло более 15 минут, выключает мониторы.
- Если система разблокирована, сбрасывает таймер.
Как использовать
- Убедитесь, что у вас установлен Python.
- Сохраните код в файл, например
monitor_off.py
. - Запустите программу, используя
python monitor_off.py
.
Автозапуск программы
Для автоматического запуска при старте системы:
- Создайте ярлык для скрипта.
- Поместите ярлык в папку автозагрузки (
Win + R -> shell:startup
).
Если нужны уточнения или дополнительные функции, дайте знать!