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

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

Автор: lucky_Luk
Дата сообщения: 10.08.2007 14:15
Stygis

Цитата:
А индексированием занимается тот же процесс?

Да.
DJ makrus

Цитата:
Основная сфера применения - дождаться завершения загрузки программы...

Блин, стормозил.

Цитата:
используй PROC-WAIT-CPU-USAGE

Во время индексирования загрузка проца прыгает от 0 и выше.

Цитата:
в настройках указываешь что бы по окончании индексирования появлялось окошко с результатами индексирования

это окошко появляется, только если процесс индексирования запущен вручную. А если запускать планировщиком, то его нет.

Сейчас тестирую вариант с привязкой к существованию окна с прогрессом индексирования (оно всегда отображается).


Добавлено:
Получилось . Тестировалось на Архивариусе 3000 версии 3.82. [more=Код задачи:]
Примечания:
1. Предварительно в Архивариусе нужно настроить автоматический запуск индексирования при старте программы.
2. Желательно настроить в Архивариусе, чтобы индексирование запускалось всегда при старте проги.
3. "Документы" - это название индекса (может быть любым), оно отображается в заголовке окна с прогрессом, на которое все завязано. Во время индексирования этот заголовок выглядит так - "бла-бла-бла - Документы"

Код:
#( Индексирование
AsLoggedUser
\ Запуск 1 раз в день
OnceADay
\ Чтобы запускался только один экземпляр задачи индексирования
SingleInstance
\ Ждем, пока комп начнет простаивать минимум 120 секунд
Rule: IDLE: 120
Action:
\ Сворачивание главного окна Архивариуса - чтобы при начале индексирования оно не вылазило
ShowMinimized
\ Запуск Архивариуса
START-APP: C:\Program Files\Archivarius 3000\Archivarius3000.exe -AutoStart
\ Пауза, она нужна, потому что Архивариус начинает индексирование не ранее чем через 1 минуту после запуска
PAUSE: 65000
\ Сворачивание окна с прогрессом индексирования - Архивариус не умеет сворачивать его автоматически
WIN-MINIMIZE: "*- Документы"
\ Цикл проверки существования окна с прогрессом индексирования - к нему привязано завершение работы Архивариуса
BEGIN
WIN-EXIST: "*- Документы"
WHILE
PAUSE: 5000
REPEAT
\ "Мягкое" завершение работы Архивариуса - сама прога не умеет автоматом выключаться после индексирования
PROC-CLOSE: "Archivarius3000.exe"
)#
Автор: DJ makrus
Дата сообщения: 10.08.2007 15:32
lucky_Luk
Цитата:
Во время индексирования загрузка проца прыгает от 0 и выше.
если поиграть с параметрами PROC-WAIT-CPU-USAGE, то скорее всего можно будет достаточно точно определять окончание индексирования, тем более если перед этим словом поставить паузу, ну, к примеру, на минуту-другую

ZEWS
Цитата:
Не совсем понял куда вообще добавлять этот код...
можно и на вкладке "Дополнительно", но лучше сразу привыкать к хорошему: в Notepad'е открываешь кронтаб-файл, он скорее всего в папке с nnCron'ом, и находишь свою задачу, затем приводишь ее к виду как в Help'е.
Если и после этого не получается, то скопируй свою задачу от символов #( до символов )# и здесь запости, здесь же тебе покажут как она должна выглядеть, ты ее скопируешь и вставишь вместо той которую тут постил.
Автор: lucky_Luk
Дата сообщения: 10.08.2007 16:30
DJ makrus

Цитата:
тем более если перед этим словом поставить паузу, ну, к примеру, на минуту-другую

ИМХО если нужно паузу ставить, то проще влепить паузу минут на 10 (за это время индексирования успевает закончиться) после запуска Архивариуса 3000, а потом юзать PROC-CLOSE:

Цитата:
от символов #( до символов )#

Я как-то вручную писал задачу и забыл в начале поставить #, ох и матюгался сабж - на каждую строку выдавал что-то про CLASSIC-TASK и какие-то ошибки в спецификации времени. Я задачу и так, и сяк просматривал, только потом допер, что CLASSIC-TASK это классический режим задач сабжа .

Еще кое-что от меня - задачи для установки активного окна поверх остальных окон и снятия этой опции по хоткею. Вроде прог для этого хватает, но nnCron и тут всех делает - такой фокус у него срабатывает практически со всеми окнами - дочерними, диалоговыми и пр., не получилось только с окном виртуальной машины в M$ Virtual PC 2007. Кроме того с nnCron можно выставлять 2 и больше окон поверх остальных - тогда они будут при активизации перекрывать друг-друга как обычно, но остальные окна всегда будут на заднем плане.
[more]

Код:
#( Окно сверху
\ Срабатывает по сочетанию клавиш CTRL+WIN+X, удобно вслепую набирать одной рукой
WatchHotKey: "^$x"
Action:
WIN-TOPMOST: "%ACTIVE-WINDOW%"
)#
Автор: ZEWS
Дата сообщения: 10.08.2007 17:59
DJ makrus
А ещё такой вопрос... у меня выгружается сразу 3 процесса по одному и тому же событию, все висят в трее... есть ли смысл прописывать каждому этот код, или можно только одному?
Автор: Sizif73
Дата сообщения: 10.08.2007 23:00
DJ makrus

Цитата:
запускаешь цикл с проверкой через MOUSE-POS

Понял, спасибо. Изучал сейчас Хелп и запутался через какую конструкцию цикл делать (или лучше/проще)
BEGIN <условие> WHILE <тело цикла> REPEAT
или
IF <условие> THEN <действие_если_TRUE> ELSE <действие_если_FALSE>
и еще
Цитата:
и выходишь из задачи
что, для этого нужна в этом случае отдельная команда?
Автор: Gospodd
Дата сообщения: 11.08.2007 02:02
Привет всем.
К специалистам-
Ребята подскажите у кого можно проконсультироваться по поводу игровых аппаратов (а точнее возможно ли умышленное проникновение в программу).
Буду рад помощи-заранее благодарен.
Игорь.
Автор: 5973785
Дата сообщения: 11.08.2007 15:13
nnCron сильно грузит систему, при чем нагрузка нарастает постепенно в плоть до того что сервер оказывается в полном дауне. Сейчас решил проблему поставив рестарт nncron`а раз в 10 часов но это не есть гут. Есть у кого нибуть соображения по этому поводу?


nncron.tab всего две задачи, одна выполняется раз в 10 минут другая раз в 24 часа, без скриптов простой запуск приложения с командной строкой.
Автор: Stygis
Дата сообщения: 11.08.2007 16:21
Настройка PerfMonitor в nncron.ini в каком состоянии? (насколько я помню, когда она ON, то начинает кушать ресурсы нехило)
Автор: 5973785
Дата сообщения: 11.08.2007 21:12
PerfMonitor в OFF

nncron.ini дефолтный, я внем не чего не менял. Когда проявилась проблема сказать не могу, заметил проблему не так давно. OS Win2k3 SP2
Автор: Nep
Дата сообщения: 11.08.2007 21:33
Gospodd
топиком ошибся
Автор: lucky_Luk
Дата сообщения: 13.08.2007 13:39
Мне нужно, чтобы задача не запускалась, если ее запуск попадает на временной интервал 23.30-01.30. Можно ли записать так?

Rule:
INTERVAL: 23:30-1:30 NOT

Как писать ноль часов, один час и пр. до 10 - одной цифрой или с ноликом спереди (без нолика вроде не ругается)?
Автор: DJ makrus
Дата сообщения: 14.08.2007 12:43
ZEWS
Цитата:
у меня выгружается сразу 3 процесса по одному и тому же событию, все висят в трее... есть ли смысл прописывать каждому этот код, или можно только одному?
Делай закрытие процессов в цикле, выходом из которого будет отсутствие процессов которые тебе надо закрыть, а после цикла делаешь очистку трея ранее указанным способом.

Sizif73
Цитата:
...через какую конструкцию цикл делать
цикл делать через цикл , в справке специальный раздел по циклам. Как задача заработает - покажи ее (можно в ПМ) подскажу где и что поменять что бы было "лучше/проще"
Цитата:
...для этого нужна в этом случае отдельная команда?
все зависит от алгоритма конкретной задачи, в большинстве случаев не надо, но иногда необходимо, для выхода из слова (а каждая задача это тоже Форт-слово) используется слово EXIT, как им пользоваться см. Help.

5973785
Цитата:
nncron.tab всего две задачи, одна выполняется раз в 10 минут другая раз в 24 часа, без скриптов простой запуск приложения с командной строкой
они могут запускаться как ты написал, а работать "бесконечно", да еще и не в одном экземпляре..., самый простой способ - покажи задачи, а так гадать можно очень долго
Автор: Sizif73
Дата сообщения: 16.08.2007 18:18
DJ makrus

Цитата:
цикл делать через цикл
намек понял
Слепил вот такую задачу

Цитата:
#( mouse_drive
AsLoggedUser
2VARIABLE mouse_pos \ Переменная для хранения целевой позиции мыши
Rule: PROC-EXIST: "ssbezier.scr" NOT
Action:
BEEP: 200 3000
1023 0 mouse_pos 2! \ Координаты x и y цели
    BEGIN
        PAUSE 100 \ пауза <тело цикла>
        mouse_pos 2@ MOUSE-POS D= \ Сравниваем нынешнюю позицию и позицию цели <условие>
    UNTIL
SCREENSAVER-ON
)#
Пищалка поставлена естественно только для контроля запуска.
С задачей есть проблемы. Во первых она не мониторит постоянно, а включается раз в минуту и если запустил с ее помощью что собирался, то жди по крайней мере следущего запуска. Во вторых даже имея запущенную задачу (пишалка и лог) результат получаешь не всегда. Системы не обнаружил.
Автор: DJ makrus
Дата сообщения: 17.08.2007 09:57
Sizif73
Цитата:
...С задачей есть проблемы...
1. В таком виде у тебя каждую минуту запускается новая задача даже если предыдущая не отработала - добавь SingleInstance
2. Что бы запустился скринсейвер, тебе надо мышкой попасть точно в нужный пиксель! То что этот пиксель расположен в углу экрана упрощает задачу, но все-таки, IMHO, лучше/легче попадать в небольшой участок, например, 5x5 пикселей. А что бы попробовать выяснить почему не срабатывает сейчас, то замени "mouse_pos 2@ MOUSE-POS D= \ Сравниваем нынешнюю позицию и позицию цели <условие>", на
Код: mouse_pos 2@
2DUP S" Координаты мыши: %0 esPICK% и %1 esPICK%" CRON-LOG
MOUSE-POS D= \ Сравниваем нынешнюю позицию и позицию цели <условие>
Автор: Sizif73
Дата сообщения: 17.08.2007 21:28
DJ makrus

Цитата:
1. SingleInstance
Спасибо, до этого сам бы не додумался.

Цитата:
2. например, 5x5 пикселей.
С этим то я согласен, просто решил для начала разобраться с задачей попроще. К 5х5 пока не знаю как подступиться.

Цитата:
3. пауза 100 мс, тебе нужна такая точность?! IMHO, это ненужная нагрузка на комп
Ну и с этим в общем согласен, правда Process Explorer никакой выдающейся нагрузки не показывает, да и когда с задачей эксперементировал там разные числа стояли, в основном 1сек.
О собственно задаче, просто нужно было сделать правильно. Забыл двоеточие после PAUSE поставить, из-за этого похоже весь косяк. Непонятно правда почему она все таки время от времени срабатывала. Окончательная версия
Код: #( mouse_drive
AsLoggedUser
SingleInstance \ Только один экземпляр задачи
2VARIABLE mouse_pos \ Переменная для хранения целевой позиции мыши
Rule: PROC-EXIST: "ssbezier.scr" NOT
Action:
1023 0 mouse_pos 2! \ Координаты x и y цели
    BEGIN        
    PAUSE: 1000 \ пауза одна секунда <тело цикла>
    mouse_pos 2@ MOUSE-POS D= \ Сравниваем нынешнюю позицию и позицию цели <условие>
    UNTIL
SCREENSAVER-ON
)#
Автор: IDentify
Дата сообщения: 18.08.2007 08:10
Есть такая задача

Код: #( Hibernate_2
WatchSuspend
Action:
WakeAfter: 00:02
)#
Автор: lucky_Luk
Дата сообщения: 19.08.2007 12:40
Нужно написать задачу, которая при запуске системы проверяет, активен nnCron или приостановлен (командой меню "Приостановить nnCron"). Если сабж приостановлен, задача должна его активировать. Пропишу ее запуск в реестр. Где-то видел соответствующие слова для задачи, но не могу найти, подскажите.
Автор: Sizif73
Дата сообщения: 19.08.2007 13:49
lucky_Luk

ENABLE-CRON
DISABLE-CRON
DISABLE-CRON?

Эти?
Автор: lucky_Luk
Дата сообщения: 19.08.2007 14:35
Sizif73

Цитата:
ENABLE-CRON
DISABLE-CRON
DISABLE-CRON?

Эти?

Да, спасибо.

Почему-то глючит задача (запускаю вручную):

Код:
AsLoggedUser
Action:
\ Удаление раздела реестра, который делает неправильную сортировку в меню "Пуск" (стиль XP)
REG-DELETE-KEY: "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MenuOrder"
Автор: Sizif73
Дата сообщения: 19.08.2007 14:40
lucky_Luk
Из хелпа
Цитата:
2) Не стоит с помощью nnCron пытаться работать с пользовательской веткой реестра HKEY_CURRENT_USER. nnCron выполняется от имени SYSTEM и не "видит" эту ветку, поскольку в контексте пользователя SYSTEM ветки остальных пользователей располагаются в разделе HKEY_USERS. Под Win2000/XP вы можете воспользоваться словом NAME2SIDS, чтобы сгенерировать SID-строку и с ее помощью получить доступ к пользовательским веткам HKEY_USERS.
Сам хотел задачу составить, по зачистке автозагрузки из реестра, но ...
Автор: lucky_Luk
Дата сообщения: 19.08.2007 23:58
Sizif73

Цитата:
2) Не стоит с помощью nnCron пытаться работать с пользовательской веткой реестра HKEY_CURRENT_USER. nnCron выполняется от имени SYSTEM и не "видит" эту ветку, поскольку в контексте пользователя SYSTEM ветки остальных пользователей располагаются в разделе HKEY_USERS.

Вот блин.


Цитата:
Под Win2000/XP вы можете воспользоваться словом NAME2SIDS, чтобы сгенерировать SID-строку и с ее помощью получить доступ к пользовательским веткам HKEY_USERS.

В хеппе мало информации. Как конкретно реализовать удаление из пользовательской ветки реестра (что делать после получения доступа с помощью NAME2SIDS)?
Автор: alexvsm
Дата сообщения: 20.08.2007 06:06
У меня слово AUTOEXEC? проверяет есть ли файл по пути, взятому из ветки HKCU:

Код: <%
CREATE MySID 256 ALLOT
USERNAME NAME2SIDS MySID PLACE

: AUTOEXEC? MailPath S" HKEY_USERS\" MySID COUNT S+ S" \Software\RIT\The Bat!\Working Directory" S+ GET-REG MailPath ASCIIZ> S" autorun.bat" S+ EXIST? ;
%>
Автор: lucky_Luk
Дата сообщения: 20.08.2007 08:54
alexvsm

Цитата:
еще вариант:
reg_value1 S" HKEY_USERS\" USERNAME NAME2SIDS S+ S" \Environment\temp" S+ GET-REG
reg_value2 S" HKEY_USERS\" USERNAME NAME2SIDS S+ S" \Environment\tmp" S+ GET-REG

Это вроде для получения значения из реестра... А для удаления что написать?
Автор: NeeDiGeo
Дата сообщения: 20.08.2007 22:34
Как можно заставить выполняться задачи крон чаще чем каждую минуту, например каждые пять секунд
Автор: Stygis
Дата сообщения: 21.08.2007 05:39
NeeDiGeo
Добавить свой цикл с паузой в 5 сек.
Автор: NeeDiGeo
Дата сообщения: 21.08.2007 14:28
Stygis
а пример кода можешь привести
Автор: Stygis
Дата сообщения: 21.08.2007 14:52

Код: BEGIN
ЧТО-ТО ТУТ ТЫ ДЕЛАЕШЬ
PAUSE: 5000
УСЛОВИЕ
UNTIL
Автор: Lovec
Дата сообщения: 21.08.2007 19:24
Пытаюсь отловить появление (создание) нового окна. Пример:

Код:
WatchWinCreate: "*"
Rule: WIN-EXIST: "*Блокнот*"
Action:
BEEP: 100 1000
Автор: DJ makrus
Дата сообщения: 22.08.2007 12:13
lucky_Luk
Цитата:
Это вроде для получения значения из реестра... А для удаления что написать?
В том же разделе Help'а "Работа с реестром (registry)" есть слова содержащие DELETE в названии

NeeDiGeo
Цитата:
Как можно заставить выполняться задачи крон чаще чем каждую минуту, например каждые пять секунд
Довольно удобно, IMHO, будет сделать задачу содержащую код приведенный Stygis'ом, только вместо "ЧТО-ТО ТУТ ТЫ ДЕЛАЕШЬ" указываешь имя задачи (которую тебе надо запускать чаще чем раз в минуту) и затем RUN или LAUNCH в зависимости от требуемых условий, см. Help)

Lovec
Цитата:
Как отловить появление дочернего окна?
В цикле применять слова для работы с дочерними окнами см. в Help'е слова FOR-CHILD-WINDOWS: и ;FOR-CHILD-WINDOWS
Цитата:
В частности интересует появление окна Радмина (не самого, а окна одного из соединений)
какое именно окно? когда ты смотришь или тебя? В некоторых случаях если "тебя", то практичней в настройках Радмина указать что бы он вел лог подключений и отлавливать nnCron'ом изменения этого файла. А если окно когда ты смотришь, то вроде оно нормально отлавливается
В твоем коде если убрать строку с Rule: и вместо "WatchWinCreate: "*"" использовать "WatchWindow: "*Блокнот*"" писк в соответствующие моменты слышен? Ось какая?
Автор: NeeDiGeo
Дата сообщения: 22.08.2007 12:20
Lovec
WatchWinCreate: "*"
Rule:

Action:
BEGIN
ЧТО-ТО ТУТ ТЫ ДЕЛАЕШЬ (BEEP 100 1000)
PAUSE: 5000
WIN-EXIST: "*Блокнот*"
UNTIL

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

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


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