Здравствуйте, подскажите новичку каким образом можно уменьшить объем расходуемой памяти скриптом(х86 8 mb, x64 12mb). Сам скрипт отслеживает системное время на ПК и после того как время больше положенного начинает считать время простоя с последующим выключением ПК после превышения определенного значения.
Собственно сам скрипт
Собственно сам скрипт
Код:
#NoTrayIcon;
;----------------------------------------------------------------------
#include <WinAPIEx.au3>;
Const $PWR_SHUTDONW = 1 ;Выключение
Const $PWR_FORCE = 4 ;Принудительное завершение процессов
Const $PWR_POWER_OFF = 8 ;Выключение питания
Const $txt = ' Идет подготовка к выключению компьютера...' & @CRLF & 'Для отмены переместите курсор мыши...';
$MyIni = @ScriptDir & '\scrpoff.ini';
;/Задержка выключения в минутах, время после которого происходит включение счетчика простоя
$MaxTimeout = Int(IniRead ($MyIni, 'shutdown', 'timeout', 10),1);задержка перед выключением после появления сообщения
$Timetostartoff = String(IniRead ($MyIni, 'shutdown', 'Timetostartoff', '18:30'));Время после которого ПК должен выключаться
$MaxIdelTime = Int(IniRead ($MyIni, 'shutdown', 'MaxIdelTime', 10),1); максимальное время простоя ПК в минутах
;----------------------------------------------------------------------
;----------------------------------------------------------------------
Sleep(100);
$start2 = @HOUR & ":" & @MIN
While $start2 < $Timetostartoff; Проверяем системное время
SystemTime();
WEnd
$IdelTime = 0;
$Flag = False;
While $Flag = False
While ($IdelTime/(6e+4)) <= $MaxIdelTime; Проверяем время простоя ПК
IdelTimeFunc()
WEnd
TimeCh()
SplashOff(); убираем сообщение если пользователь отменил выключения
$Flag = False; устанавливаем флаг в 0 для дальнейшего цикла
$IdelTime = _WinAPI_GetIdleTime(); синхранизируем значение времени простоя
Wend
Exit;
;----------------------------------------------------------------------
;[Выключение ПК]
Func ShutdownMachine()
SplashOff();
Sleep(300);
Shutdown ($PWR_SHUTDONW + $PWR_FORCE + $PWR_POWER_OFF);
EndFunc
;----------------------------------------------------------------------
;[Системное время]
Func SystemTime()
$start2 = @HOUR & ":" & @MIN
Sleep(600000);задержка 10 минут
EndFunc
;----------------------------------------------------------------------
;[Время простоя]
Func IdelTimeFunc()
$IdelTime = _WinAPI_GetIdleTime();
Sleep(300000);задержка 5 минут
EndFunc
;----------------------------------------------------------------------
;[Функция отображения сообщения и выключения пк через установленный период времени]
Func TimeCh()
$StartTimer = TimerInit();
Sleep(100);
$Flag = True;
$MPos2 = MouseGetPos();
Sleep(100);
SplashTextOn('', $txt, 500, 100, -1, -1, 1+32, 'Verdana', 10);
Sleep(100);
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
Sleep(200)
;--------------------------------------------------------------
Wend
EndFunc