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

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

Автор: lucky_Luk
Дата сообщения: 27.12.2005 10:51
Подарок от меня к Новому Году тем у кого нет мультимедийной клавы - задача которая позволяет увеличивать звук в любом приложении нажатием сочетания клавиш (задачу для уменьшения звука думаю сами сообразите - вместо MIXER-UP
ставим MIXER-DOWN и меняем клавишу в комбинации).
Для себя сделал, может еще кому пригодится.

Код:
NoDel
\ Срабатывает по сочетанию "CTRL + ALT + UP ARROW"
WatchHotKey: "^@{UP}"
Action:
\ Увеличиваем громкость на 10%
10 MIXER-UP
\ Воспроизведение тестового звука
PLAY-SOUND: "C:\WINDOWS\Media\Windows XP - Динь.wav"
Автор: evle
Дата сообщения: 27.12.2005 15:05
DJ makrus

Цитата:
Честно говоря не совсем понял что понимается под грамматикой...

Грамматика - это формальное описание синтаксиса. Ссылку эту уже видел, но пока не все там посмотрел. Буду дальше искать.
Автор: DJ makrus
Дата сообщения: 28.12.2005 06:05
lucky_Luk
Цитата:
Люди, кто-нибудь экзешник задачи делал - поделитесь исходником или скажите какими словами его сделать, очень интересно - на оффоруме только один пример висит - ничего не понял из него.

Код: #( compile_exe
WatchHotKey: "^c"
Action:
TQUERY: "Будем компилировать exe-шник?" 15 No
IF
START-APPW: nncron.exe S" task_to_exe.txt" INCLUDED
TMSG: "Компиляция закончена!%crlf%Смотри файл MyProg.exe в дириктории nnCron'a" 15
THEN
)#
Автор: lucky_Luk
Дата сообщения: 29.12.2005 10:06
DJ makrus

Цитата:
OLDEST-FILE-TIME: "C:\Temp\*.*"
2DUP
3 TimeMsgBox
2DUP
CRON-LOG
FDELETE

Сработало, спасибо. Что за слово "2DUP"?

Цитата:
обрати внимание на то, чем любая команда копирования отличается от команды удаления.

Не допер, намекни .

Можно с помощью nnCron спрятать или удалить из трея значок другой программы (программа в это время должна работать)?
Автор: DJ makrus
Дата сообщения: 29.12.2005 14:20
lucky_Luk
Цитата:
Что за слово "2DUP"?
- дублирует два верхних значения на стеке, подробности см. в описании основных слов SP-Forth (на русском языке)

Намекаю: для команды удаления достаточно одного аргумента, а для копирования - двух!


Цитата:
Можно с помощью nnCron спрятать или удалить из трея значок другой программы ...
если этот значок был создан с помощью nnCron'а, то можно, подробнее смотри в Help'е "Плагин win2tray.spf"
Автор: lucky_Luk
Дата сообщения: 30.12.2005 09:39
DJ makrus
Спасибо за информацию, буду разбираться.


Цитата:
если этот значок был создан с помощью nnCron'а, то можно, подробнее смотри в Help'е "Плагин win2tray.spf"

Это значек другой программы, nnCron тут нипричем, в таком случае можно скрыть этот значек?

А как сделать так, надо чтобы самый новый файл в папке (найденный плагином files_pick), передавался как один из параметров командной строки для другого приложения. Слово чтобы найти самый новый файл знаю, а как передать имя этого файла другому приложению?
Автор: DJ makrus
Дата сообщения: 31.12.2005 09:14
lucky_Luk
Цитата:
Это значек другой программы, nnCron тут нипричем, в таком случае можно скрыть этот значек?
скорее всего нет, но посмотри упомянутый мною выше плагин и попробуй примеры в нем, мож это то что тебе надо?


Цитата:
А как сделать так, надо чтобы самый новый файл в папке (найденный плагином files_pick), передавался как один из параметров командной строки для другого приложения...
записываешь в переменную и в командной строке указываешь в %переменнная%, а что программа с файлом творить будет? Может и nnCron это могет?

2All

Поздравляю всех с наступающим Новым 2006 годом!

Пущай в наступающем году:
ваши компы будут еще производительнее,
подключения к Инету еще быстрее и дешевле,
программы стабильнее и функциональнее
ну и так далее...

Автор: lucky_Luk
Дата сообщения: 01.01.2006 22:22
DJ makrus
Как правильно запустить программу lftp (прога работает из командной строки) из-под nnCron? Если писать имя проги и параметры запуска в командной строке то все работает, через батник тоже все работает. А если эту прогу с теми же параметрами (или батник) запустить через START-APPW: то она глючит. StartIn прописал (без этого вообще закрывалась). Русских и пр. национальных символов в командах нет, только английские.
Если надо более подробная информация то скину в ПМ.
За пример с экзешником спасибо, а можно ли сделать экзешник из задачи которая запускается через WatchHotKey: ? Я так понял для этого надо чтобы он всегда в памяти висел, а у меня прога выполняется и выгружается (по крайней мере ее нет в списке процессов).

Цитата:
записываешь в переменную и в командной строке указываешь в %переменнная%

Т.е. нужно всунуть имя файла в VALUE-переменную?

Цитата:
а что программа с файлом творить будет? Может и nnCron это могет?

В папку с архивами копируется еще один архив потом надо чтобы этот самый новый файл тестировался WinRAR на ошибки. Файл находим плагином files_pick, а как его имя приписать в командную строку - так чтоли - winrar -t %file_name%?
Автор: DJ makrus
Дата сообщения: 02.01.2006 06:02
lucky_Luk
Цитата:
Как правильно запустить программу lftp (прога работает из командной строки) из-под nnCron...
Покажи задачку которая работает и которая не работает и хотя бы в общем в чем заключается ее глюки, хочешь тут хочешь в ПМ.

Цитата:
...а можно ли сделать экзешник из задачи которая запускается через WatchHotKey:...
сделать exe-шник можно из любой задачи, точнее говоря из тела любой задачи, но запуск этого exe-шника (как и любого другого) должен быть внешним. В принципе возможно сделать exe-шник который бы постоянно висел в памяти и ожидал нажатия на конкретный хоткей, но для этого надо в него встроить перехватчик клавиатуры. Как это сделать я пока не знаю , хочешь покопайся в исходниках nnCron'а посмотри как это сделано на Форте, или найди то же самое на JScript и VBScript - они встраиваются в задачи.

Цитата:
Т.е. нужно всунуть имя файла в VALUE-переменную?
Почитай plz:
1. Help -> Работа с программой -> Работа с переменными, константами и массивами;
2. Help -> Дополнительная информация -> "Неотложная помощь" по Форту -> А какие еще есть "пpодвинутые" сpедства pаботы со стpоками?


Цитата:
В папку с архивами копируется еще один архив потом надо чтобы этот самый новый файл тестировался WinRAR на ошибки...
запустить Winrar с любыми ключами комндной строки - это по силу nnCron'у, про %file_name% см. ответ на предыдущую цитату.
Автор: niko7
Дата сообщения: 07.01.2006 17:08
lucky_Luk

Цитата:
Подарок от меня к Новому Году тем у кого нет мультимедийной клавы


Спасибо огромное давно хотел приспособить nnCron для регулировки звука, но все
руки не доходили. Действительно для меня это, как подарок.
Доделал так:
#( Zvyk_-
NoDel
WatchHotKey: "^@{DOWN}"
Action:
10 MIXER-DOWN
)#

А если не писать NoDel тогда nnCron удалит эту задачу?




Автор: DJ makrus
Дата сообщения: 07.01.2006 17:54
niko7
Цитата:
А если не писать NoDel тогда nnCron удалит эту задачу?
нет, не удалит:
Help -> Ключевые слова nnCron -> Опции задачи:
Цитата:
Не удалять из кронтаба RunOnce-задачу.
Совместное использование опций RunOnce и NoDel позволяет запускать задачу при каждом перечитывании кронтаба.
про RunOnce читай там же.
Автор: lucky_Luk
Дата сообщения: 07.01.2006 23:35
niko7
Рад что пригодилась моя работа, ты все правильно сделал. Я немного задачу поюзал и пришел к выводу что лучше регулировать звук шагами по 5% более плавно получается.
С NoDel я переборщил, это слово нужно только если прописано RunOnce (без NoDel nnCron удаляет такие задачи после выполнения).
Автор: Phelicks
Дата сообщения: 11.01.2006 09:25
Народ. Может есть у кого ?

Нужен скрипт, при открытии определенного окошка, нажималась определенная кнопочка, например как в Word, окно сохранить, да - нет

Спасибо заранее !
Автор: lucky_Luk
Дата сообщения: 11.01.2006 09:35
Phelicks

Цитата:
Нужен скрипт, при открытии определенного окошка, нажималась определенная кнопочка,

Давай поподробнее - у тебя 2 варианта - или хелп прочесать и самому сделать, или нам разжевать что ты хочешь и от какой проги это окошко и т.п. Тогда авось кто-то с твоей прогой сталкивался и накатает скрипт.

Поищи в Хелпе слова с watch.
1. Что за окошко? Если именно к нему привязаться нужно то кажись за это отвечает WatchWinCreate.
2. А если при открытии окна запускается прога то юзай слово WatchProc (вроде так).
3. Определенная кнопочка где должна нажиматься - в том же окошке или в другом?
Автор: lucky_Luk
Дата сообщения: 15.01.2006 18:27
Иногда вручную (браузером) качаю файлы из Инета в разные папки, так вот есть папка Download и в ней подпапки. Нужно чтобы если в верхней папке или подпапках появлялся новый файл то nnCron передавал имя и путь к нему другой программе. Как запускать такую задачу и как передать имя и путь знаю.
Вопрос как найти самый новый файл в подпапке (слова в плагине files_pick вроде не поддерживают маски в именах папок).
Неохота делать отдельную задачу для каждой папки - может кто подскажет комплексный вариант? Можно например находить самые свежие файлы в каждой подпапке (тогда один из них и будет нужным), но как из 3-4 файлов которые лежат в разных подпапках выбрать самый новый?
Автор: DJ makrus
Дата сообщения: 16.01.2006 02:25
lucky_Luk
Если кратко (на большее сейчас нет времени), то алгоритм примерно такой:
- находишь свежий файл в подпапке №1
- время это файла сохраняешь в переменной file_time, полный путь в переменной file_path
- находишь свежий файл в подпапке №2
- сравниваешь время этого файла со временем в переменной file_time, если этот файл свежее то заносишь время и путь в переменные file_time и file_path соответственно
- повторяешь последние два пункта пока не прочешишь все подпапки, после чего в переменной file_path будет искомый файл.
Процесс поиска свежего файла и сверку на свежесть можно загнать в цикл, но там могут возникнуть осложнения, поэтому сделай пока что примитивную, но надежную задачу состоящую из повторяющихся участков кода (отличие только в имени проверяемой папки), а если будет время и желание займешься совершенствованием (циклы, массивы и т. д.)
Автор: lucky_Luk
Дата сообщения: 16.01.2006 09:51
DJ makrus
Не все понял.

Цитата:
полный путь в переменной file_path

Как это сделать - какой тип переменной нужен?
Пробовал с VALUE и VARIABLE, и так, и сяк вертел - текстовую строку в переменную вроде можно положить, а вот назад извлекается число. Но обработки путей и имен файлов успешно применяю массивы.

Цитата:
сравниваешь время этого файла со временем в переменной file_time, если этот файл свежее то заносишь время и путь в переменные file_time и file_path соответственно

Как сравнить время двух файлов и понять что один новее второго - отнять одно число от другого и проверить не отрицательный ли результат - а как сделать проверку на "отрицательность"?

У меня в задачах часто повторяются абсолютно одинаковые строки. Можно как-то строку один раз написать и сделать на нее ссылку в пределах одной задачи?
Автор: DJ makrus
Дата сообщения: 17.01.2006 09:34
lucky_Luk

Цитата:
Как это сделать - какой тип переменной нужен?...

массив, что бы понять что за числа "извлекаются назад", посмотри Help -> Дополнительная информация -> "Неотложная помощь" по Форту -> 4. Какие типы строк используются в SP-Forth?
Так же очень полезным будет прочесть 6. А какие еще есть "продвинутые" средства работы со строками?
в том же разделе справки

Цитата:
Как сравнить время двух файлов и понять что один новее второго - отнять одно число от другого и проверить не отрицательный ли результат - а как сделать проверку на "отрицательность"?
Все зависет от того в каком формате используется время файла. Смотри Help -> Ключевые слова nnCron -> Работа с датами и временем
а проверка на "отрицательность" - это же сравнение с нулем! Какие здесь могут быть сложности или я чего-то не понял?

Цитата:
...слова в плагине files_pick вроде не поддерживают маски в именах папок...
заглянул я в files_pick.spf там ко всем словам есть опция RECURSIVE - она не то что тебе надо?

Цитата:
У меня в задачах часто повторяются абсолютно одинаковые строки. Можно как-то строку один раз написать и сделать на нее ссылку в пределах одной задачи?
конечно, [more=­вот ­пример ]
Код: #( birthdays
OnceADay
<(
: birthdays.txt S" birthdays.txt" ;
VARIABLE fb
CREATE bline 256 ALLOT
CREATE bname 64 ALLOT
VARIABLE bdate
VARIABLE byears
VARIABLE bdays
\ start reminding <pre-period> days before the birthday
5 CONSTANT pre-period
)>
Action:
birthdays.txt R/O OPEN-FILE-SHARED IF DROP ERR-MSG: "Can't open %birthdays.txt% file" EXIT THEN fb !
BEGIN bline 250 fb @ READ-LINE THROW WHILE
bline SWAP
<TIB
get-number Year@ get-number get-number YMD>DATE bdate !
Year@ SWAP - byears !
1 WORD COUNT 63 MIN bname PLACE
CUR-DATE bdate @ DATE- NEGATE DUP 0 > OVER pre-period < AND
IF bdays !
MSG: "Birthday reminder!!!%crlf%%bname COUNT%%crlf%Remining days: %bdays @%.%crlf%Aged: %byears @%.%crlf%Don't forget to send greeting card!"
\ do smth useful here - play a little melody, for example
ELSE DROP THEN
TIB>
REPEAT
DROP
fb @ CLOSE-FILE DROP
)#
Автор: lucky_Luk
Дата сообщения: 17.01.2006 12:37
DJ makrus

Цитата:
а проверка на "отрицательность" - это же сравнение с нулем!

Каким макаром сравнить с нулем - какое слово за это отвечает и как обрабатывать результат? Не врубаюсь.

Цитата:
заглянул я в files_pick.spf там ко всем словам есть опция RECURSIVE

То что надо, спасибо.

Цитата:
Если же строку "описать" внутри конструкции <% ... %>, но вне задачи, то ее можно применять во всех последующих задачах кронтаба.

Где ее в кронтабе лепить - между задачами или вначале кронтаба? И как потом вызывать - из примера не понимаю, дай ссылку на раздел Справки.
Автор: DJ makrus
Дата сообщения: 17.01.2006 15:55
lucky_Luk

Цитата:
Каким макаром сравнить с нулем...
с помощью слова > или < можно сравнить два числа лежащих на стеке, результат сравнения флаг ( TRUE или FALSE ) который можно использовать например в конструкции IF ... THEN, или [more=вот так]
Код: #( system_restart
Time: START-TIME
Rule: GetTickCount 90000 <
Action:
\ тут выполняем всю необходимую работу
)#
Автор: DmitryKz
Дата сообщения: 18.01.2006 00:11
Подскажите, пожалуйста, а как смотреть файлы архива конференции по nnCron с расширением .sqd и .sqi, которые на оффсайте выложены? Какой-нить просмотрщик для них существует вообще, а то ничего не нашел. Спасибо!
Автор: Interceptor
Дата сообщения: 20.01.2006 17:30
Помогите пожалуйста с написанием скрипта, который бы по нажатию Ctrl+* на Num клавиатуре делал mute/unmute.
Автор: br4in
Дата сообщения: 20.01.2006 19:47
Interceptor
Попробуй так
[more]
#### mute/unmute при нажатии ctrl+* ########

# muting when ctrl+*

#( mut_mut
WatchHotKey: "^{MULTIPLY}"
Action:
MIXER-MUTE
)#

# unmuting when ctrl+*

#( mut_unmut
WatchHotKey: "^{MULTIPLY}"
Rule:
MIXER-STATE 0=
Action:
MIXER-UNMUTE
)#

#####################
[/more]
Автор: Interceptor
Дата сообщения: 21.01.2006 13:54
br4in
Спасибо! работает!

Подскажите пожалуйста почему вот такой скрипт выдает ошибки, вроде уже все правильно?
WatchProcStop: "Janus.exe"
Rule: INTERVAL: 7:10-8:00 ONLINE: "Dial-Up" FILE-EXIST: "d:\rsdn.txt" AND
Action:
StartIn: "E:\"
ShowNormal NormalPriority
START-APP: E:\rsdn.exe
FILE-DELETE: "d:\rsdn.txt"

где я ошибаюсь?
Автор: WOLFTIE
Дата сообщения: 22.01.2006 10:04
У меня при запуске браузера запускаются программы Proxomitron и HandyCache?, а при закрытии браузера они закрываются. Но иконки становятся своеобразным фантомом, которые исчезают при проведении курсора мыши над системным треем.
Как сделать так чтобы и иконки исчезали из трея сразу же после закрытия программ?
Автор: lucky_Luk
Дата сообщения: 22.01.2006 12:26
WOLFTIE

Цитата:
Как сделать так чтобы и иконки исчезали из трея сразу же после закрытия программ?

Пропиши в конце своей задачи слово TRAY-REFRESH
Оно уберет "фантомы" из трея.
Автор: WOLFTIE
Дата сообщения: 22.01.2006 13:43
lucky_Luk
Спасибо работает.
Да как я не заметил раньше, все так просто!
Автор: DJ makrus
Дата сообщения: 23.01.2006 04:26
Interceptor
Поскольку вариант "mute/unmute при нажатии ctrl+*" предложенный br4in, IMHO, немного неправильный, то предлагаю свою версию [more=задачки]
Код:
#( mut_unmut
WatchHotKey: "^{MULTIPLY}"
Action:
MIXER-STATE
IF
MIXER-MUTE
ELSE
MIXER-UNMUTE
THEN
)#
Автор: lucky_Luk
Дата сообщения: 23.01.2006 09:50
Может ли nnCron выбирать случайный файл из списка и передавать его другой программе (мой плеер этого не умеет)? Прежде чем возится со списками интересно узнать реализуемо это в принципе или нет?
Добавлено:
Мою задачу можно реализовать с использованием слова PICK-RANDOM-FILE: из плагина files_pick, потом кладем путь и имя файла в массив, а из него запускаем с помощью START-APP: или START-APPW:.
Вопрос: как управлять окном плеера с помощью nnCron если у окна каждый раз новый заголовок - название трека? К чему еще можно привязаться чтобы идентифицировать окно плеера?

Добавлено:
А как сделать чтобы nnCron выбирал случайную строку из плейлиста (по сути текстового файла)?
Автор: DJ makrus
Дата сообщения: 26.01.2006 00:54
lucky_Luk
Цитата:
как управлять окном плеера с помощью nnCron если у окна каждый раз новый заголовок - название трека? К чему еще можно привязаться чтобы идентифицировать окно плеера?

Во-первых не исключено что могут помочь регэкспы.
Во-вторых возможно можно привязаться к классу окна, подробности в Help'е - "win_pattern".
В-третьих может помочь возможность присвоить окну произвольный заголовок.
И, наконец, в-четвертых: заголовок окна = название песни + песню ты скармливаешь плееру с помощью nnCron'а == как мне кажется ты должен знать заголовок!


Цитата:
А как сделать чтобы nnCron выбирал случайную строку из плейлиста (по сути текстового файла)?

Скорее всего тебе поможет слово READ-LINE:
Цитата:
Для построчного чтения из файла нам понадобится слово SP-Forth READ-LINE. Вот его описание:

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

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


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