Ru-Board.club
← Вернуться в раздел «Программы»

» nnCron-Планировщик с поддержкой скриптового языка

Автор: Stygis
Дата сообщения: 02.08.2006 16:26
ALEF
А заголовок у окна сообщения какой? Насколько я знаю, WatchWinCreate срабатывает при отображении окна, т.е.

Код: WatchWinCreate: "Ошибка"
Автор: ALEF
Дата сообщения: 03.08.2006 11:42
Заголовком у окна является название программы или модуля (скорее модуля, потому что у програмы другой заголовок) в котором обнаружена ошибка.
В моем случае это "IFC7 *", но WatchWinCreate: "IFC7 *" не срабатывает.
Автор: Stygis
Дата сообщения: 03.08.2006 13:14
ALEF
Если система XP, то попробуй отлавливать появление процесса dumprep.exe и dwwin.exe (это программы отсылки сообщения об ошибке) и уже после этого проверяй WIN-EXIST: "OfficeWatson"
Автор: ALEF
Дата сообщения: 03.08.2006 13:51
отлавливать dwwin.exe это хорошая идея, у меня давно вызревал план найти этот процесс, а теперь есть его имя, попробую.

Добавлено:
Попутно обнаружил похожую ситуацию - как обнаружить окно "Run" которое появляется по команде "Start\Run..." ?
WinSpy показывает что у него нет заголовка родительского окна.
Автор: WolfEnstein
Дата сообщения: 03.08.2006 14:00
Может вопрос и глупый но...
Значит есть почтовый сервер Mdaemon там есть папка куда скидываются все неотсортированные письма.Сам демон жту папку не чистит. И за час работы сервера скапливается порядка 1000 ненужных файлов. Как можно с помошью крона автоматизировать процесс очистки.
Команда
AsLoggedUser
Time: */10 * * * * *
Action:
PURGE-OLD: "F:\MDaemon\Public Folders\Mail Archive.IMAP\Inbound to.IMAP\Postmaster@prolog.kiev.ua.IMAP" 1
не хочет работать....
Автор: Stygis
Дата сообщения: 03.08.2006 14:22
ALEF
WatchCreate тоже не подхватывает?
Собственно, а зачем его отлавливать?

WolfEnstein
Может это связано с путем (все-таки @ - нестандартный символ для пути ). Пробовал из консоли выполнять этот код?
Автор: unreal666
Дата сообщения: 03.08.2006 14:44
WolfEnstein
Что это за путь?

Цитата:
F:\MDaemon\Public Folders\Mail Archive.IMAP\Inbound to.IMAP\Postmaster@prolog.kiev.ua.IMAP

Название файла или что?

Stygis
ALEF

Походу WatchWinCreate отлавливает только родительские окна, т.е. главные окна процессов.
Автор: WolfEnstein
Дата сообщения: 03.08.2006 16:02
unreal666
делал по аналогии с очисткой папки TEMP описанной в хелпе.
Цитата:
Postmaster@prolog.kiev.ua.IMAP
- Это название папки которую надо чистить.
Автор: Stygis
Дата сообщения: 03.08.2006 16:20
WolfEnstein
Проверь работу задачи на каком-нибудь простом каталоге для начала (что-нить типа C:\1) - будет ли работать? О результатах сообщи.
Автор: unreal666
Дата сообщения: 03.08.2006 17:15
WolfEnstein

Цитата:
делал по аналогии с очисткой папки TEMP описанной в хелпе.

Плохо значит смотрел.
Нужно так
PURGE-OLD: "F:\MDaemon\Public Folders\Mail Archive.IMAP\Inbound to.IMAP\Postmaster@prolog.kiev.ua.IMAP\*" 1
Автор: ALEF
Дата сообщения: 04.08.2006 10:49

Цитата:
Походу WatchWinCreate отлавливает только родительские окна

ну так значит нужно ловить родительское окно, а где оно, какое оно?

Цитата:
WatchCreate тоже не подхватывает?

Да, тоже не срабатывает
Автор: Stygis
Дата сообщения: 04.08.2006 13:03
ALEF

Цитата:
родительское окно

Подозреваю, что родитель для Run'а - explorer Так что фиг ты его отловишь.

ЗЫ. Для чего тебе Run надо отловить? Может другой способ найти решение?
Автор: Dimanish
Дата сообщения: 05.08.2006 12:16
3 вопроса:
1. Как узнать выполнилась ли задача успешно?
2. Что означает строка Start result: 0 в лог-файле?
3. Что такое идентификатор нити процесса?
Автор: Stygis
Дата сообщения: 06.08.2006 01:52
All
Никто не озадачивлся запуском задачи, например, каждые два часа. При этом Time: 0 */2... не подходит, т.к. если я запущу комп в 1:59, то задача выполнится только в 2:00 (если RunMissed не было) или выполнится в 1:59 (если RunMissed было) и в 2:00. А необходимо, чтобы выполнилось в 1:59, 3:59, 5:59 и т.д. Ставить в задаче PAUSE: 7200000 ой как некрасиво

Dimanish
1. Что ты понимаешь под успешным выполнением? Все слова выполнились или еще что-то?
2. В принципе 0 - это истина, так что, наверное, Start result: 0 означает успешное выполнение задачи, т.е. nnCron выполнил все слова задачи.

Добавлено:
3. Нить - это ты, наверное, про Thread? Вот тебе небольшое определение:

Цитата:
поток (нить) Последовательно выполняемый фрагмент программы. Процесс может иметь несколько потоков (нитей), выполняющихся одновременно, каждый из которых выполняет свою задачу. Если поток заканчивает выполнение своей задачи, он откладывается или уничтожается.

Что такое идентификатор, наверное, объяснять не надо?
Кстати, а зачем тебе это?
ЗЫ. Всегда больше любил название поток, или вообще так и называл - тред
Автор: unreal666
Дата сообщения: 06.08.2006 02:15
Stygis

Задумываться не задумывался, но сейчас посмотрел в справке - там есть описание этой фигни.
Делается так:
Time: ? */2 * * * *
Вопросительные знаки означает время старта nnCon, , т.е. при обработке поля знак вопроса будет заменен на время старта nnCron: минуты - для поля минут, час для поля часов, день месяца для поля дней месяца и месяц для поля месяца.

Находится описание здесь: Справка - Работа с программой - Cron-формат
Или в Инете http://nncron.ru/help/RU/working/cron-format.htm#STARTTIME
Автор: ALEF
Дата сообщения: 06.08.2006 09:36
Не понимаю как в форте работать со строками.
Код: CREATE str_time 256 ALLOT
Action:
MSG: "Сервер упал и был остановлен %crlf% %DD%.%MM%.%YYYY% в %hh%:%mm%:%ss%"
S" Сервер упал и был остановлен %crlf% %DD%.%MM%.%YYYY% в %hh%:%mm%:%ss%" str_time PLACE
TMSG: "%str_time COUNT%" 50
Автор: Stygis
Дата сообщения: 06.08.2006 10:50
unreal666
О, буду пробовать, просмотрел Спс

ALEF
Ну дык, эксперимент-то не чистый MSG: не через строку, а TMSG: через строку... А так TMSG тоже работает

Код: TMSG: "Сервер упал и был остановлен %crlf% %DD%.%MM%.%YYYY% в %hh%:%mm%:%ss%"
Автор: Dimanish
Дата сообщения: 06.08.2006 11:17
Stygis

Цитата:
1. Что ты понимаешь под успешным выполнением? Все слова выполнились или еще что-то?

Второй пункт ответил на мой 1-ый вопрос --->

Цитата:
2. В принципе 0 - это истина, так что, наверное, Start result: 0 означает успешное выполнение задачи, т.е. nnCron выполнил все слова задачи.



Цитата:
3. Нить - это ты, наверное, про Thread? Вот тебе небольшое определение:

поток (нить) Последовательно выполняемый фрагмент программы. Процесс может иметь несколько потоков (нитей), выполняющихся одновременно, каждый из которых выполняет свою задачу. Если поток заканчивает выполнение своей задачи, он откладывается или уничтожается.

Цитата:
Кстати, а зачем тебе это?

В справке к nnCron в разделе "Работа с программой" -> "Настройка nnCron" -> Закладка "Основные", "Формат лога" написано:

Цитата:
%DD% %MMM% %hh%:%mm%:%ss% %ThreadId%
Мне, например, удобно, чтобы каждая запись в лог-файле предварялась текущей датой, временем и идентификатором нити процесса:
Вот как это выглядит в лог-файле:
21 Jun 06:00:00 944 TASK: fido_purge_link
21 Jun 06:00:00 944 Start: sqpack.exe *
21 Jun 06:05:57 944 Start result: 0

Стало интересно, зачем автору знать ThreadId завершённой задачи
Автор: lucky_Luk
Дата сообщения: 06.08.2006 17:26
Можно ли с помощью сабжа поцепить на сочетание клавиш установку опции панели задач WinXP "Отображать поверх остальных окон" или появление/скрытие панели задач при активной опции "Автоматически скрывать панель задач"?
Как вариант - подскажите текст задачи которая:
1. Определяет текущие координаты указателя мыши и запоминает их;
2. Переводит мышь в верхнюю часть экрана (т.е. на любые заданные координаты сверху);
3. Делает паузу (чтобы посмотреть в системный трей);
4. Если пользователь не двигает мышку во время паузы то переводит указатель назад на координаты, которые запомнились в п.1;
5. Если пользователь двигает мышь во время паузы то ничего не делает и завершает выполнение.
Пойду Хелп ковырять.
Автор: ALEF
Дата сообщения: 06.08.2006 20:36
Stygis
Спасибо, мне нужно было слово EVAL-SUBST
А между MSG и TMSG - в данном случае разница не принципиальна.

Я хотел сохранить строку с тескстом и временем в переменную чтобы потом ее несколько раз использовать в TMSG добавляя каждый раз маленький кусочек, типа "до рестарта осталось 2 минуты", "до рестарта осталось 1 минута".

Как для этой цели проще всего сохранить строку?
Автор: Stygis
Дата сообщения: 06.08.2006 20:55
ALEF
Ну я это и написал
Автор: ALEF
Дата сообщения: 07.08.2006 10:01
Надо сделать аналог процедуры (как в PASCAL) или подпрограммы.
Для этого хочу описать новое слово, ему нужно будет передать текстовую строку, а оно эту строку применит в своей работе.
Примерно вот так:
: my_word MSG: "%переданная_строка%";
Action:
my_word 888


Как передать строку слову?
Автор: Stygis
Дата сообщения: 07.08.2006 10:28

Код: : my_word MsgBox ;
Action:
S" 888" my_word
Автор: ALEF
Дата сообщения: 07.08.2006 13:13
Stygis
спасибо.
Но мне надо больше. Я понял что не обойтись без более подробных объяснений.
Задумка такая:
из задачи нужно отослать e-mail на определенные три адреса, адреса нельзя ставить в копию или перечислить их через запятую (потому что они пойдут на SMS-шлюз).
Отправку почты я делаю через <VBScript> CreateObject("CDO.Message") ...
Этот скрипт я хочу вынести в отдельное слово, вместо адреса в нем поставить %my_addr% и передавать ему адрес через переменную my_addr.
В итоге нужно будет вызвать это слово с параметром примерно так:
MY_SEND "admin@sms.com"
А для реализации задуманного не хватает у меня знаний и опыта в фоте.
Автор: Stygis
Дата сообщения: 07.08.2006 13:50
ALEF
Вот так и надо было сразу
Скрипт приведи здесь (кажется, он был на nnCron-форуме?, но пусть и здесь лежит), будем в скрипт запинывать
ЗЫ. Не забываем про тег [more]

Добавлено:
Кстати, помню писали в этой теме про параметры (или нотацию, уж не знай, как называть) "{}" - попробуй поищи.
Автор: ALEF
Дата сообщения: 07.08.2006 15:22
почту я отправлюя [more=вот такой задачей с VBScript]
#( Watch_Error
WatchProc: "dwwin.exe"
Action:
\ все адреса и названия вымышлены а совпадения случайны
<VBScript>
Dim omail
On Error Resume Next
Set omail = CreateObject("CDO.Message")
omail.From = "admin@company.com"
omail.To = "admin@microsoft.com"
omail.Textbody = "Server was stopped cause an error. Send:" & Now
omail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
omail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = _
"smtp-mail-server.company.local"
omail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
omail.Configuration.Fields.Update
omail.Send
if Err<>0 Then Err.Clear
Set omail = Nothing
Wscript.Quit
</SCRIPT>
)#
[/more]
и для отправки отдельных писем по нескольким адресам чтобы не копировать скрипт в теле задачи несколько раз нужно оформить его в "подрограмму"
Автор: Stygis
Дата сообщения: 07.08.2006 15:27
ALEF
Попробуем посмотреть

Добавлено:
ALEF
В качестве временной меры можно использовать такой метод:

Код: #( task-alert-test
NoActive
Action:
<JScript>
WScript.echo("%move COUNT%");
</SCRIPT>
)#

#( task-alert-test2
NoActive
CREATE move 256 ALLOT
Action:
S" tmp1" move PLACE
task-alert-test LAUNCH
PAUSE: 2000
S" tmp2" move PLACE
task-alert-test LAUNCH
PAUSE: 2000
S" tmp31" move PLACE
task-alert-test LAUNCH
)#
Автор: unreal666
Дата сообщения: 07.08.2006 17:13
lucky_Luk

Цитата:
4. Если пользователь не двигает мышку во время паузы то переводит указатель назад на координаты, которые запомнились в п.1;

А что у тебя считается "не двигать мышку"? Просто даже если ее не двигать, то она может сдвинуться на несколько пикселей (если мышь хреновая). Т.е. нужно задать разброс в пикселях для погрешности.
Автор: ALEF
Дата сообщения: 07.08.2006 17:54
Решение от Немцева (на мой взгляд, весьма элегантное):
1. Записать скрипт в отдельный файл (так удобнее) send_msg.pat
2. В том месте, где нужно вставить адрес пишем %MY-SEND-TO ASCIIZ>%
3. Описать слово MY-SEND и переменную MY-SEND-TO
Пример использования:

Код: #( test-send-mail
NoActive
CREATE MY-SEND-TO 64 ALLOT
: MY-SEND ( a u -- )
MY-SEND-TO ZPLACE
S" send_msg.pat" FILE EVAL-SUBST S" send_msg.vbs" FWRITE
START-APPW: cscript send_msg.vbs
;
Action:
S" scipio.nn@gmail.com" MY-SEND
)#
Автор: Stygis
Дата сообщения: 07.08.2006 18:13
ALEF
Приведи в отдельном посте всю задачу для будущих поколений
ЗЫ. Убери из задачи адрес

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

Предыдущая тема: Как писать кириллицей, а НЕ латиницей (транслитом)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.