Для решения этой задачи можно использовать язык программирования 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).
Если нужны уточнения или дополнительные функции, дайте знать!