Тема: AutoIt v3: Автоматическое отключения компьютера после простоя
Смысл идеи прост - подмена заставки Windows скомпиллированным скриптом-псевдозаставкой, который автоматически запустится после заданного интервала простоя(в соответствии с настройками заставки) и выполнит требуемые операции, например выключит компьютер.
-----------------------------------
Без гарантий. Используете на свой страх и риск.
Скрипт автоматического выключения компьютера через заданный промежуток времени после простоя. После компилляции скрипта scrpoff.au3 в исполняемый EXE, следует изменить расширение EXE на SCR, после чего установить полученную псевдозаставку через пункт "Установить" контекстного меню Проводника, что равносильно команде rundll32.exe desk.cpl,InstallScreenSaver %l. Далее следует настроить задержку включения псевдозаставки в свойствах "Экран" - "Заставка". После автоматического запуска, скрипт-псевдозаставка начнет отсчет дополнительного простоя в минутах (простой указан в файле scrpoff.ini, который расположен рядом со скриптом), по истечении которого компьютер будет автоматически выключен. Чтобы прервать исполнение псевдозаставки и остановить отсчет простоя достаточно сдвинуть курсор мыши.
Таким образом суммарный интервал простоя, по прошествии которого компьютер будет выключен равен задержке включения псевдозаставки плюс интервалу простоя, указанному в файле scrpoff.ini
scrpoff.au3:
#NoTrayIcon;
;----------------------------------------------------------------------
Const $PWR_FORCE = 4 ;Принудительное завершение процессов
Const $PWR_POWER_OFF = 8 ;Выключение питания
Const $txt = ' Идет подготовка к выключению компьютера...' & @CRLF & 'Для отмены переместите курсор мыши...';
$MyIni = @ScriptDir & '\scrpoff.ini';
;/Задержка выключения в минутах читается из ini файла/
$MaxTimeout = Int(IniRead ($MyIni, 'shutdown', 'timeout', 10));
;----------------------------------------------------------------------
Sleep(100);
SplashTextOn('', $txt, 500, 100, -1, -1, 1+32, 'Verdana', 10);
Sleep(100);
;/Цикл дополнительного простоя/
;----------------------------------------------------------------------
$StartTimer = TimerInit();
Sleep(100);
$MPos2 = MouseGetPos();
While 1
;--------------------------------------------------------------
$Diff = Int(TimerDiff($StartTimer)/(6e+4));
If $Diff>$MaxTimeout Then ShutdownMachine(); ExitLoop;
;--------------------------------------------------------------
$MPos1 = MouseGetPos();
If BitXor($MPos1[0],$MPos2[0]) Or BitXor($MPos1[1],$MPos2[1]) Then ExitLoop;
Sleep(200);
$MPos2 = MouseGetPos();
If BitXor($MPos1[0],$MPos2[0]) Or BitXor($MPos1[1],$MPos2[1]) Then ExitLoop;
;--------------------------------------------------------------
Wend
Exit;
;----------------------------------------------------------------------
;[Выключение ПК]
;----------------------------------------------------------------------
Func ShutdownMachine()
SplashOff();
Sleep(300);
Shutdown ($PWR_FORCE + $PWR_POWER_OFF);
EndFunc
;----------------------------------------------------------------------
;pltrgst 2010
scrpoff.ini(расположен рядом с откомпиллированным скриптом):
;Интервал простоя после запуска псевдозаставки, минут.
;По истечении интервала простоя компьютер будет выключен.
[shutdown]
timeout = 1
/Настройки параметров питания/
Переход компьютера в ждущий/спящий режимы должен быть запрещен.
Отключение монитора и жестких дисков допустимо раньше, нежели включение псевдозаставки.
Lang. AutoIt v3
Тестировалось на OC WinMe
-----------------------------------