| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Планировщик заданий |
| Автор: Snowy 28.8.2006, 17:32 |
| Написал класс, управляющий встроенным Планировщиком Windows. Просьба протестировать. Возможности: - добавление заданий - удаление заданий - список существующих заданий - список периодов срабатывания задания - добавление периодов срабатывания - изменение параметров "путь, комментарий и т.д." В аттаче модули и пример. Не смог победить проблему с повторным запуском. Точнее вроде работает, но максимальный период 9999 минут. Может у кого будут какие идеи, как можно правильно настроить повтор. Без указания конечной даты будет запускаться ежедневно в указанное время. Также есть хитрый флаг TriggerType. Он работает по умолчанию, но можно сменить его на: TASK_EVENT_TRIGGER_AT_SYSTEMSTART - запускать таск при старте системы TASK_EVENT_TRIGGER_AT_LOGON - запускать при логоне Добавлено @ 17:34 ЗЫ. Еженедельный, ежемесячный и ежегодный запуск не реализовывал - ИМХО не нужны они для программного управления. |
| Автор: Snowy 28.8.2006, 17:49 |
| Не спорю. Зато стандартный гарантировано уже есть у пользователя. Я знаю, что можно задавать в часах. Но эта сволочь никак не хочет на них реагировать. Я и минуты методом тыка хрен знает за сколько заставил работать. 8 раз этот раздел MSDN'a перечитал. Там всё слишком кратко. А начинаешь делать - не слушается Но более-менее нормальный функционал получился. |
| Автор: Elfebet 28.8.2006, 17:59 |
| Я так думаю задавать периодичность по минутам - это не правильно. Стандартном планировщике периодичность задается в: днях, неделях, месяцах и однократно. Т.е. нужно как-то явно указывать планировщику что выполнение будет каждые 3 дня и т.п. так что здесь эти 4 вида периодичности играют важную роль. |
| Автор: drkot 28.8.2006, 17:59 | ||||
как впрочем и весь МСДН. Написано красиво, а работать в лучшем случае в 2 ночи начинает кошда по три спички в глазах. Согласен. для внедрения в свое ПО вещь "золотая". (после установки системы ету службу сразу отключаю тк практически не пользуюсь) Добавлено @ 18:01
не ты неправильно понял, есть возможность задать произвольный интервал повлорения (например каждые 5 минут) Добавлено @ 18:03
посмотрю может чего накопаю. |
| Автор: Elfebet 28.8.2006, 18:18 | ||
вот что я нашел в файле mstask.pas:
наверное соответсвенно и выставляется число от 0 - 9999. Т.е. наверное если: TASK_TIME_TRIGGER_DAILY, то от 1 до 31 TASK_TIME_TRIGGER_WEEKLY, то от 1 до 52 тока вот не понял TASK_TIME_TRIGGER_MONTHLYDATE и TASK_TIME_TRIGGER_MONTHLYDOW.... сто пудова от 0-9999 - может быть не только минуты... |
| Автор: Snowy 28.8.2006, 19:46 |
| Ну там далеко не так всё просто. Я попозже сделаю перегруженные функции для добавления других вариантом. Сейчас вариантов два: Задавать период в минутах, либо ежедневный запуск. Но можно сделать настройку интервала в днях. Можно и по дням недели. Можно и по дням месяца. Год, пожалуй делать уже не буду. Хотя в принципе можно. Посмотрим. С периодом проблем нет. Проблемы с повторением. Угу. Это всё ясно. Просто у однократного запуска есть ещё такой параметр - повторять N-ый период. |
| Автор: Elfebet 29.8.2006, 13:55 |
| Snowy, прошу помоги разобраться как это выставлять период. что у меня ничего не получается. (ну к примеру выставить Ежемесячно, с расписанием по месяцам и выбор месяцов). ну прям горит |
| Автор: Snowy 29.8.2006, 14:06 |
| Пока никак. Нужно доработать такие возможности. Если хочешь сам попробовать, то дорога тебе в MSDN. Но не думаю, что разберёшься - тап придумано, как обычно через заднюю ногу. |
| Автор: Elfebet 30.8.2006, 09:19 | ||||
Все таки что хотел узнать - узнал и разобрался. Вот я сделал маленькую програмку подобно планировщику задач (но не все возможности реализованы). Вот основной код создания задания
И еще планировщик задания будет запускать задания если он конечно не отключен и нужно ставить обязательно имя и пароль пользователя, елси пароль пустой то задание не запуститься. Snowy, спасибо за помощь! Прошу оценить. |
| Автор: Snowy 30.8.2006, 10:14 |
| Ну надо же. И даже работает Доработаю свой класс, если кому нужно будет. Пока не нужно - не буду на это время тратить. |
| Автор: drkot 30.8.2006, 15:25 |
| Правилно. Главное принципы понять, чтоб когда понадобится парева меньше было. |
| Автор: Snowy 30.8.2006, 16:12 |
| ХМ. Только щаз заметил, что у тебя расписание задаётся в момент создания. А как же несколько расписаний? Если так уж нужен ежемесячный запуск, то можно и моим классом создать 12 расписаний - по одному на каждый месяц Хотя конечно по честному нужно делать полнофункционал... Но лень Полноценное управление и так есть - через стандартную управлялку шедулером. А данная фень нужна только для автоматического создания задания. Например запускать себя автоматом по ночам. |
| Автор: Elfebet 30.8.2006, 16:20 |
| Snowy, совершенно верно! Лень. И я не ставил задачу сделать несколько расписаний. Добавлено @ 16:21 ну если вдруг кому-то понадобится несколько расписаний, могу и доработать... |
| Автор: SamStone 3.10.2006, 22:04 |
| Апну тему в надежде на ответ (и чего я ее на месяц раньше не нашел? У планировщика можно выставить крыжик чтобы уведомлять юзверя о пропущеных заданиях (комп был выключен и прочее). Можно ли вытащить пропущенные времена запуска или самому придется высчитывать? |