Что нового

[Время, дата] Последовательная смена даты компьютера до указанного значения.

AK90

Новичок
Сообщения
1
Репутация
0
Добрый день.

Задача передо мной стоит такая. Нужно написать скрипт, последовательно переключающий дату на компьютере.

Есть найденный на этом форуме скрипт, меняющий дату компа и откатывающий ее обратно.

Код:
Код:
#include <GUIConstantsEx.au3>
#include <Date.au3>

Global $sYEAR = @YEAR, $sMON = @MON, $sMDAY = @MDAY, $fChange, _
        $iStart = TimerInit()

GUICreate('Test', 500, 500)
$nDate = GUICtrlCreateDate('', 8, 45, 194, 21)
$nLabel = GUICtrlCreateLabel('Текущая дата (' & @MDAY & '.' & @MON & '.' & @YEAR & _
        '), вы можете ' & @CRLF & ' поменять. Выберите нужную дату:', 8, 8, 374, 35)
$nButton1 = GUICtrlCreateButton('Поменять', 20, 72, 75, 25)
$nButton2 = GUICtrlCreateButton('Отмена', 110, 72, 75, 25)
GUICtrlSetState(-1, $GUI_DISABLE)
GUISetState()

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            If $fChange Then
                If MsgBox(33, 'Question', 'Вернуть начальную дату?') = 1 Then
                    _Date_Back()
                EndIf
            EndIf
            Exit
        Case $nButton1
            $aDate = StringSplit(GUICtrlRead($nDate), '.')
            If $aDate[0] <> 3 Then ContinueLoop
            _SetDate($aDate[1], $aDate[2], $aDate[3])
            $fChange = True
            GUICtrlSetState($nButton2, $GUI_ENABLE)
            GUICtrlSetData($nLabel, 'Текущая дата (' & @MDAY & '.' & @MON & '.' & @YEAR & _
                    '), вы можете ' & @CRLF & ' поменять. Выберите нужную дату:')
        Case $nButton2
            _Date_Back()
            GUICtrlSetData($nLabel, 'Текущая дата (' & @MDAY & '.' & @MON & '.' & @YEAR & _
                    '), вы можете ' & @CRLF & ' поменять. Выберите нужную дату:')
            GUICtrlSetData($nDate, '')
    EndSwitch
WEnd

Func _Date_Back()
    Local $s_Date_Back, $a_Split, $i_Diff = Round(TimerDiff($iStart) / 1000)
    $s_Date_Back = _DateAdd('s', $i_Diff, $sYEAR & '/' & $sMON & '/' & $sMDAY)
    $a_Split = StringSplit($s_Date_Back, '/')
    If $a_Split[0] = 3 Then
        _SetDate($a_Split[3], $a_Split[2], $a_Split[1])
        $fChange = False
    EndIf
EndFunc   ;==>_Date_Back


Хотелось бы получить возможность задать две даты(начало и конец). После чего должен запускаться цикл +1 день с определенной задержкой. ПОсле совпадения дат - цикл должен завершаться и возвращаться должна текущая дата.

К сожалению, навыки использования AUTOIT у меня отсутствуют, а разобраться хотелось бы. Меня хватило только на рисование алгоритмов, как должно работать, но как это реализовать - :stars:

Пример работы, как я его вижу:

1) гуевое окошко с двумя выкидными календарями(см. приведенный скрипт) - старт.дата и конечная дата.
2) после задания дат - запускаем нажатием кнопки
3) скрипт "запоминает" текущую дату
4) скрипт ставит дату компа равной стартовой дате.
5) задержка х секунд
6) проверка условия выхода из цикла (Если СтартоваяДата> или = Конечная Дата - цикл завершается, возвращается текущая дата.
7) ЕСЛИ СтартоваяДата< Конечная Дата ТО:
значение даты компа ставится СтартоваяДата+1 день

Цикл повторяется до условия выхода.

Буду очень благодарен любой посильной помощи.
 
Верх