Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

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

Аватара для Creat0R

Must AutoIt


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

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


Цитата Anarasius:
как это убрать т.е.что бы программа запускалась только один раз при наступлении даты. »
Вот именно поэтому задачу изначально нужно поставить так, чтобы потом небыло вопросов и переделок:

Код: Выделить весь код
#NoTrayIcon
#include <Misc.au3>
;

_Singleton(@ScriptName)

;Задаём опции трея (меню пользователя)
Opt("TrayMenuMode", 1)

;Создаём пункты в значке трея
Global $nAbout_TrayItem = TrayCreateItem("About...")
TrayCreateItem("")
Global $nExit_TrayItem = TrayCreateItem("Выйти из планировщика задач    (Ctrl+Shift+E)")

;Задаём состояние трея
TraySetToolTip("Планировщик запуска")
TraySetIcon("Shell32.dll", 25)
TraySetClick(8)
TraySetState()

;Задаём горячую клавишу для выхода
HotKeySet("^+e", "_Exit") ; Ctrl + Shift + E выход

;Указываем файл конфигурации
Global $sConfig_File = StringTrimRight(@ScriptFullPath, 3) & "ini"

;Указываем программу(ы) для запуска
Global $aRun_Apps = StringSplit("notepad.exe|calc.exe", "|")

;Указываем числа для запуска программ(ы)
Global $aRun_Days = StringSplit("10,20,30", ",")

;Определяем последнюю дату запуска
Global $sLast_Run_Day = IniRead($sConfig_File, "Main", "Last Run Day", -1)

;Добавляем программу в автозапуск
If @Compiled = 1 Then
    If RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", @ScriptName) = "" Then
        $iAsk = MsgBox(266532, "", "Поместить программу в автозагрузку?")

        If $iAsk = 6 Then _
            RegWrite("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", @ScriptName, "REG_SZ", '"' & @ScriptFullPath & '"')
    EndIf
EndIf

;Запускаем функцию _Check_Run_Proc() каждые 5 секунд
AdlibEnable("_Check_Run_Proc", 5000)
Call("_Check_Run_Proc")

;Главный цикл
While 1
    Switch TrayGetMsg()
        Case $nExit_TrayItem
            _Exit()
        Case $nAbout_TrayItem
            MsgBox(270400, "About", "Copyright (С) 2009", 5)
    EndSwitch
WEnd

Func _Check_Run_Proc()
    If @MDAY = $sLast_Run_Day Then Return

    For $i = 1 To $aRun_Days[0]
        If @MDAY = $aRun_Days[$i] Then
            ;Запоминаем последний день запуска
            $sLast_Run_Day = $aRun_Days[$i]

            ;Запоминаем последний день запуска в ini-файл (на случай перезагрузки компьютера)
            IniWrite($sConfig_File, "Main", "Last Run Day", $sLast_Run_Day)

            ;Задаём иконку значку в трее
            TraySetIcon("Shell32.dll", 246)

            ;Запускаем программы (задачи)
            Local $sTasks = ""

            For $j = 1 To $aRun_Apps[0]
                $sTasks &= $j & ". " & StringRegExpReplace($aRun_Apps[$j], "^.*\\", "") & @CRLF
                Run($aRun_Apps[$j])
            Next

            ;Показываем информацию о запуске
            TrayTip("Планировщик...", "Запущенные задачи: " & @CRLF & $sTasks, 0, 1)

            ;Ждём 3 секунды
            Sleep(3000)

            ;Задаём иконку значку в трее (обратно на изначальную)
            TraySetIcon("Shell32.dll", 25)

            ExitLoop
        EndIf
    Next
EndFunc

Func _Exit()
    Exit
EndFunc
Для пропущенных дней нужно писать отдельную проверку, и как верно заметил Diamond, это уже начинает походить на планировщик задач.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 01:31, 20-09-2009 | #15