Цитата:
Цитата Creat0R
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce", @ScriptName, "REG_SZ", @ScriptFullPath) »
|
а почему "RunOnce"?.. он же одноразовый - его придется создавать при каждом запуске
думаю скрипт будет проще, если использовать ключ "Run"
Цитата:
Цитата Creat0R
If _NowTime() = $sStartTime Then Return 1 »
|
Windows не является ОСью реального времени, поэтому логичней ставить ">=" вместо равенства... Тем более, если речь о возможной перезагрузке... Хотя на самом деле все сложней чем кажется. Предпложим, что комп выключили в "21:00:00" и включили на следующий день в 8:00 - время просрочено, а скрипт этого не сможет определить, выходов два: 1) задавать всегда точную дату/время; 2) сохранять где-нибудь время последнего запуска скрипта. Последний вариант уже напоминает полноценный шедулер с периодическим запуском (раз в год, раз в месяц, etc) и логикой анализа просроченных заданий. Первый вариант "одноразовый" и поэтому проще:
Код:
#include <Date.au3>
$sRegKey = "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
$sRegVal = RegRead($sRegKey, @ScriptName)
If Not($sRegVal = @ScriptFullPath) Then RegWrite($sRegKey, @ScriptName, "REG_SZ", '"'& @ScriptFullPath &'"')
_ScheduleStart_Proc("2009","03","22","21","05","00")
RegDelete($sRegKey, @ScriptName)
Func _ScheduleStart_Proc($iYear, $iMonth, $iDay, $iHour, $iMinute, $iSecond)
Local $tFileNow, $tFile=_Date_Time_EncodeFileTime($iMonth, $iDay, $iYear, $iHour, $iMinute, $iSecond)
Local $pFileNow, $pFile=DllStructGetPtr($tFile)
Do
Sleep(100)
$tFileNow = _Date_Time_EncodeFileTime(@MON, @MDAY, @YEAR, @HOUR, @MIN, @SEC)
$pFileNow = DllStructGetPtr($tFileNow)
Until _Date_Time_CompareFileTime($pFileNow, $pFile)>=0
EndFunc
|