Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата 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

Отправлено: 06:23, 22-03-2009 | #10