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

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

Автор: kspy
Дата сообщения: 06.07.2004 09:09
Привет всем!

Пишу вот так:

Код:
#( idle_balooon1
Rule: PROC-EXIST: "iexplore.exe" PROC-EXIST: "icq.exe" OR IDLE: 30 AND IF TQUERY: "Вы не используете интернет. Закрыть приложения его использующие?" 10 Yes THEN
Action:
FOR-PROCS: "iexplore.exe"
KILL: "%FOUND-PID%"
;FOR-PROCS
FOR-PROCS: "icq.exe"
KILL: "%FOUND-PID%"
;FOR-PROCS
TRAY-REFRESH
30000 BalloonTime !
2 BalloonIcon !
BALLOON: "Внимание!" "Не забывайте выходить из интернета! Программы использующие соединение были закрыты..."
BEEP: 200 300
)#
Автор: DJ makrus
Дата сообщения: 06.07.2004 10:44
Crime
Могу предложить три варианта решения данной задачи:
1. Либо с помощью плагина Winamp.spf (но в нем, кажется, нет соответствующего слова, я им не пользуюсь не могу сказать точно), либо какими-то другими средствами определить имя (и хорошо бы полный путь) играющего файла и соответственно удалить его. Здесь тебе могут помочь те кто "плотно" работал с Winamp'ом и, кончно, же strauss .
2. Если за указанным тобою действием закреплен hotkey самого Winamp'а, то послать его окну соответствующую комбинацию клавиатурных кодов (SEND-KEYS: "key_code_string"). Посмотри hotkey'и Winampa, и, если такой существует, то с помощью справки легко составишь скрипт.
3. Третий вариант можно реально состряпать, но он - "некрасивый", т. к. решает поставленную задачу грубо (в лоб). Создаешь хоткей nncron'а по которому все те действия которые ты делаешь вручную с помощью мышки будет делать nncron эмулируя работу мыши, т. е. вытаскиваешь окно Winampa на поверхность в строго определенном положении и затем чередуя перемещения указателя мыши и нажатия кнопок выполняешь удаление трека с винта с помощью Winamp'а, после чего запускаешь на воспроизведение следующий трек (использую слова из плагина Winamp.spf) и сворачиваешь окно. Браться за этот вариант стоит если два предыдущие неосуществимы, подожди что другие тебе посоветуют.

kspy

Цитата:
Rule: <любая последовательность слов Форта, возвращающая флаг>

После
Цитата:
TQUERY: "Вы не используете интернет. Закрыть приложения его использующие?" 10 Yes

флаг остается, но ты его забираешь контрукцией IF...THEN, которая и является здесь лишней, и надо добавить еще один логический оператор (скорее всего AND), другими словами должно выглядеть примерно так:

Цитата:
Rule: PROC-EXIST: "iexplore.exe" PROC-EXIST: "icq.exe" OR IDLE: 30 AND TQUERY: "Вы не используете интернет. Закрыть приложения его использующие?" 10 Yes AND

И еще несколько моментов (IMHO):

1. Для закрытия программ лучше использовать следующую конструкцию:
PROC-EXIST: "iexplore.exe"
IF
PROC-CLOSE: iexplore.exe \ для этого слова необходим плагин procwin.spf
THEN
PAUSE: 20000
PROC-EXIST: "iexplore.exe"
IF
KILL: "iexplore.exe"
THEN
\ в этом случае перед тем как "убить" процесс, осуществляется попытка закрыть его
\ "по мирному", и если были несохранены какие-либо данные, то можно отлавливать
\ соответствующее окошко и в зависемости от обстоятельств сохранять\несохранять.

2. Возможно стоит еще и прервать соединение с I'net'ом.

3. Я ни разу не использовал TQUERY в Rule, и если это не допустимо, то TQUERY можно загнать в тело задачи.
Автор: kspy
Дата сообщения: 06.07.2004 13:26

Цитата:
Rule: PROC-EXIST: "iexplore.exe" PROC-EXIST: "icq.exe" OR IDLE: 30 AND TQUERY: "Вы не используете интернет. Закрыть приложения его использующие?" 10 Yes AND

так не работает. вернее не выполняется IDLE: 30

а если TQUERY загнать в тело, то как? использовать там IF ... THEN ... EXIT ?
Автор: DJ makrus
Дата сообщения: 06.07.2004 18:55
kspy

Цитата:
Чтобы получить доступ к счетчику idle time (времени простоя компьютера), воспользуйтесь словом GetIdleTime, которое кладет на стек время бездействия компьютера в миллисекундах.
Следует упомянуть, что счетчик инкрементируется только если в каком-то из заданий уже используется слово IDLE: или отсчет idle time инициирован принудительно:
<%
InitIdleHook
%>
.
.
.
Операционная система накладывает некоторые ограничения на работу слова IDLE:. Пpи активном консольном окне (Command Prompt, FAR и т. д.) Windows "не замечает" действий юзеpа и счетчик idle time пpодолжает инкpементиpоваться, невзиpая на его (юзеpа) активность.
В Win9* пpи активном консольном окне игноpиpуется только ввод с клавиатуpы, а действия юзеpа с мышью обpабатываются коppектно. В Win2000 игноpиpуется и то и дpугое.


Теперь как "загнать" TQUERY в тело скрипта:
...
Action:
TQUERY: "Вы не используете интернет. Закрыть приложения его использующие?" 10 Yes
IF
\ здесь старое содержимое раздела Action:
THEN
)#
Автор: kspy
Дата сообщения: 07.07.2004 06:11
DJ makrus
ОК спасибо, сейчас попробую...
Автор: LeXXeR
Дата сообщения: 07.07.2004 06:34
Помогите, пожалуйста!
Есть плагин к Винампу, называется np.spf . Работает, т.е. пишет в файл имя проигрываемого трека. А хотелось бы не в файл, а в виде Balloon или всплывающей подсказки. По хоткею или при смене трека - не суть важно пока. Я так понимаю нужно как то разобрать файл на слова и выкинуть их в заголовок подсказки, но в регулярных выражениях не силен.
Автор: maskman
Дата сообщения: 07.07.2004 18:41
Могу предложить такой вариант.

Код: #( general_now_playing

SingleInstance
<(
VARIABLE WINAMP_STATUS
CREATE WINAMP_TITLE 256 ALLOT
CREATE WINAMP_NEW_TITLE 256 ALLOT
CREATE WINAMP_SONG 256 ALLOT
CREATE WINAMP_NEW_SONG 256 ALLOT
)>

Time: *
Also
WatchProc: "winamp.exe"
Rule: PROC-EXIST: "winamp.exe"
Action:
BEGIN
WIN-EXIST: "Winamp v1.x"
WHILE
RE-MATCH: "%FOUND-WINDOW%" "/\d+\. (.*) - Winamp/"
IF
104 0 1024 WIN-HWND SendMessageA WINAMP_STATUS !
WINAMP_STATUS @ 3 =
IF
S" Winamp поставлен на паузу" EVAL-SUBST WINAMP_NEW_TITLE PLACE
ELSE
WINAMP_STATUS @ 1 <>
IF
S" Winamp остановлен" EVAL-SUBST WINAMP_NEW_TITLE PLACE
ELSE
S" Winamp сейчас играет" EVAL-SUBST WINAMP_NEW_TITLE PLACE
$1 WINAMP_NEW_SONG PLACE
THEN
THEN
WINAMP_NEW_SONG COUNT WINAMP_SONG COUNT COMPARE WINAMP_NEW_TITLE COUNT WINAMP_TITLE COUNT COMPARE OR
IF
WINAMP_NEW_SONG COUNT WINAMP_SONG PLACE
WINAMP_NEW_TITLE COUNT WINAMP_TITLE PLACE
BALLOON: "%WINAMP_NEW_TITLE COUNT%" "%WINAMP_NEW_SONG COUNT%"
THEN
THEN
PAUSE: 60
REPEAT
)#
Автор: LeXXeR
Дата сообщения: 08.07.2004 05:28
maskman
Спасибо!
Немного сложновато для моего понимания, но - работает!
Иногда, правда, баллончик выскакивает не только при смене, но и в середине песни. Но это не страшно.
Автор: maskman
Дата сообщения: 08.07.2004 11:43
LeXXeR

Цитата:
Иногда, правда, баллончик выскакивает не только при смене, но и в середине песни. Но это не страшно.

Потому что,

Код: Time: *
Автор: elite128
Дата сообщения: 08.07.2004 12:00
вопрос по nnbackup: Какнить ему можно передать имя компьютера для обзывания архива типа имя компьютера_дата.zip?
Автор: LeXXeR
Дата сообщения: 08.07.2004 12:08
maskman
Еще заметил что nncron.exe (ранее практически не грузивший проц), теперь грузит его довольно ощутимо - этак на 25-30% (Athlon 700). Может как-то можно снизить частоту опроса WatchProc? Или дело не в ней?
Автор: maskman
Дата сообщения: 08.07.2004 12:53

Цитата:
Дока
WatchProc: "proc_pattern"
Срабатывает при запуске указанного процесса.

Так что, грузить проц он не может

Задачка писана не мной.
Запустил Winamp (на самом деле другим плеером слушаю музон) потестить задачку.
Действительно балоны криво вываливаются. Надо будет над ней порабоать.
Но nnCron проц не грузит (не больше обычного).
Автор: LeXXeR
Дата сообщения: 09.07.2004 06:33
maskman
Послал скрин на ящик в профиле
Автор: denver
Дата сообщения: 09.07.2004 11:11
maskman
Это я скрипт переделывал к такому виду, а что там криво вываливается?
Time: * ни о чем не говорит. Балоны всплывают когда заголовок окна winamp меняется. Посредине песни у меня ничего не всплывает (только если ставить на паузу и т.п.).

Добавлено

Цитата:
Иногда, правда, баллончик выскакивает не только при смене, но и в середине песни. Но это не страшно.

Вспомнил, такое бывает если включена прокрутка названия трека в заголовке винампа.
Автор: maskman
Дата сообщения: 09.07.2004 12:47
LeXXeR
Вот и автор, все вопросы можешь ему адресовать.


Цитата:
Еще заметил что nncron.exe (ранее практически не грузивший проц), теперь грузит его довольно ощутимо - этак на 25-30% (Athlon 700)

На эхе в этом случае советуют следущее:
1. Забэкапится
2. Установить nnCron по умочанию.
3. Добавить ту задачу на которую грешишь и погонять

вот и выяснится она виновна в загрузке проца или нет.
Автор: DJ makrus
Дата сообщения: 10.07.2004 04:16
denver
1. А для чего вообще используется " Time: * "? (именно в этом виде)
2. У тебя там в плагине нигде путь и имя проиграиваемого файла не проскальзовывает, а
то у Crime проблемка обозначилась (см. выше) или может знаешь откуда можно вытащить (может в плагин еще одно слово добавить?)
Автор: Crime
Дата сообщения: 11.07.2004 16:48
еще вопросик, возможно ли вывести месадж в видеопорт (прям в игрушку как FRAPS показывает везде FPS) ?
Автор: 4get
Дата сообщения: 11.07.2004 22:42
Открыт официальный www-форум nnSoft
http://www.nncron.ru/forums/
Автор: denver
Дата сообщения: 12.07.2004 21:43
DJ makrus
Вообще-то я взял плаг с офсайта (np.spf) и переделывал его (в оригинале он выводит имя в файл).
Time: * говорит что надо постоянно запускать задачу. В любом случае задача запускается если существует окно винампа. Если оно существует то делает что надо и отключается на 60 миллисекунд (PAUSE: 60) можно поставить сколько хощь - просто могут быть задержки перед показом балона.
Вытянуть имя файла можно: надо только отправить сообщение винампу:

Код:
#define IPC_GET_BASIC_FILE_INFO 291 //pass a pointer to the following struct in wParam
typedef struct {
char *filename;

int quickCheck; // set to 0 to always get, 1 for quick, 2 for default (if 2, quickCheck will be set to 0 if quick wasnot used)

// filled in by winamp
int length;
char *title;
int titlelen;
} basicFileInfoStruct;
Автор: DJ makrus
Дата сообщения: 13.07.2004 00:30
denver

Цитата:
Time: * говорит что надо постоянно запускать задачу.

А разве задача не будет постоянно запускаться без Time: * ? (а заодно и без Also ). Именно это меня и смущает, т. к. эти слова, на мой взгляд, лишние.

Если не ошибаюсь сообщение винампу написано явно не на скриптовом языке nnCron'а (в котором я немного разбираюсь) и даже не на Форте, а что-нибудь навроде С++ (угадал\неугадал?) в котором я точно ничего не понимаю, поэтому если уж:

Цитата:
как разобрать ответ - это задача не для меня...

то и не для меня тем более, так что подождем знающих людей
Автор: daMIR
Дата сообщения: 14.07.2004 00:36
Вот у меня есть опции задачи:
[q]#( Miranda_ON
WatchConnect
SingleInstance
Rule: INTERVAL: 02:00-09:00
Rule: PROC-EXIST: "miranda32.exe" NOT
AsLoggedUser
LoadProfile[q]
Опция "Rule: INTERVAL: 02:00-09:00" Вроде бы определяет время запуска. Т.е. данная задача должна запускаться только с 2 до 9, но она запускается всегда при установке Инет-соединения. В чем ошибка?
И еще можно ли сделать что бы для каждого пользователя были свои задачи? Т.е. из общего кронтаба были задачи и общие, и для каждого отдельно. В хелпе ответа не нашел.
Автор: 4get
Дата сообщения: 14.07.2004 11:05
Наверное в том что миранда не запущена

Код: Rule: INTERVAL: 02:00-09:00
Rule: PROC-EXIST: "miranda32.exe" NOT
Автор: daMIR
Дата сообщения: 15.07.2004 00:14
Понял. Тогда так надо записать:
Rule: INTERVAL: 02:00-09:00 PROC-EXIST: "miranda32.exe" NOT AND
Утречком проверю.
Читал я хелп читал, а это посмотреть не допер
Автор: maskman
Дата сообщения: 16.07.2004 13:19
elite128

Цитата:
вопрос по nnbackup: Какнить ему можно передать имя компьютера для обзывания архива типа имя компьютера_дата.zip?

"%COMPUTERNAME%_%DD%%MM%%YYYY%.zip"
Автор: Crime
Дата сообщения: 17.07.2004 17:26
может кто подскажет, забыли про винамп есть плеер 1by1 там через хоткей при активном окне можно физически удалять, но как сделать сендкей в то окно я не понял %(
Автор: DJ makrus
Дата сообщения: 18.07.2004 18:57
Crime
Сначала с помощью утилиты WinSpy встроенной в nnCron узнаешь заголовок окна у программы 1by1 .
При дальнейшем его использовании следует обратить внимание на следующий момент: при проигрывании какого-либо трека в 1by1 к названию окна может дописываться имя трека, т. е. заголовок может выглядеть так " 1by1 - Dr.Alban" (у меня этой проги нет, проверить не могу), тогда из этого заголовка следует выделить и в дальнейшем использовать ключевое слово (фразу), в данном случае "1by1", а в качестве маски использовать "*1by1*".
Далее примерный код задачи:

#( bad_track-delete
WatchHotKey: "@+z" \ задача сработает по хоткею 'ALT + SHIFT + Z'
Action:
\ для более дружелюбного интерфеса и корректной работы следует еще добавить ряд
\ проверок (наличие процесса 1by1.exe, активно ли его окно, если нет то запомнить
\ имя активного окна для того что бы по окончанию "сендкея" вновь сделать его
\ активным и т. п.
WIN-ACTIVATE: "*1by1*" \ делаем окно программы 1by1 активным
SEND-KEYS: "^(@{F1})" \ передаем окну hotkey программы 1by1 на
\ физическое удаление непонравившегося трека, например 'CTRL + ALT + F1'
)#

конкретный hotkey для удаления см. в документации к 1by1 , а для запуска задачи любой тобою еще не задействованный в nnCron'е. Задачу не проверял (нет 1by1 , но работать должна)
Автор: Crime
Дата сообщения: 18.07.2004 20:53

Цитата:
ри проигрывании какого-либо трека в 1by1 к названию окна может дописываться имя трека,

не пишет 1by1, только название трека. я думал может можно сделать без активации окна ?
Автор: DJ makrus
Дата сообщения: 19.07.2004 03:03
Crime
тогда с помощью той же WinSpy посмотри класс или window handle окна, используются
так же как и заголовок.
Автор: wizzi
Дата сообщения: 21.07.2004 08:58
Народ, подскажите плз, не нашел такого вопроса, можно ли как поставить nncron без прав администратора?
Автор: Den Ju
Дата сообщения: 21.07.2004 10:15
Привет all!!

что-то не допру как сделать так, чтобы nncron постоянно мониторил "свободное место на диске", т.е если на диске осталось <= 20 мегов, то удалять все из таких-то папок?????

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

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


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