Разное (Служебные ключевые слова)
CD-TRAY-EJECT: <drv_letter>
CD-TRAY-CLOSE: <drv_letter>
Oткрыть/закрыть лоток указанного CD-ROM драйва.
См. также: WatchDrive: <drv_letter>, WatchDriveRemove: <drv_letter>, IS-CD-PRESENT: <drv_letter>
Возвращает флаг TRUE (-1) если в указанном CD-ROM драйве находится диск и флаг FALSE (0), если указанный CD-ROM драйв пуст.
Пример:
#( test_cd_present
WatchShutdown Action: IS-CD-PRESENT: "d" IF ERR-MSG: "Remove disk from CD-ROM drive!" THEN )#
Существует вариант этого слова с постфиксным расположением параметров. В периоде исполнения (например, в консоли ):
CHAR D IS-CD-PRESENT
В периоде компиляции (например, в теле задач):
[CHAR] D IS-CD-PRESENT
См. также: WatchDrive: <drv_letter>, WatchDriveRemove: <drv_letter>, CD-TRAY-EJECT: <drv_letter>, CD-TRAY-CLOSE: <drv_letter>
PAUSE: <time_in_ms>
PAUSE: <hh:mm>
Позволяет приостановить выполнение задания на указанный промежуток времени.
Примеры:
#( test_pause Time: 30 7 * * * * Action: START-APP: d:\tools\vmtdial\vmtdial.exe -h
\ ждем три секунды PAUSE: 3000 WIN-CLOSE: "*VMT Dialer*" )#
#( test_pause1 WatchFile: "c:\xxx.sem" Action: PAUSE: "00:30" \ ... выполняем работу через 30 минут после \ появления файл-флага )#
Существует постфиксный вариант слова PAUSE, но в этом случае время указывается только в миллисекундах.
Пример:
\ пауза на пять секунд 5000 PAUSE \ пауза на минуту 60000 PAUSE
Принимает в качестве аргумента строку с именем пользователя и возвращает SID-строку (Security Identifier, идентификатор безопасности: уникальное числовое значение, которое идентифицирует пользователя или группу пользователей). Используется, например, для доступа к пользовательским веткам системного реестра Windows (HKEY_USERS).
S" VKondakoff" NAME2SIDS
Слово NAME2SIDS используется только в Win2000/XP.
Добавляет message в лог-файл filename.
Существует вариант этого слова с постфиксным расположением параметров:
S" message" S" filename" LOG
Выводит сообщение в общий лог nnCron, заданный в переменной nncron.ini Cronlog:. Строка, передаваемая слову CRON-LOG в качестве параметра может содержать предопределенные переменные nnCron.
Пример:
S" test message" CRON-LOG S" message from %USERNAME%" CRON-LOG
Помещает text в буфер обмена.
Существует также постфиксный вариант этого слова:
S" text" CLIPBOARD!
См. также описание слов CLIPBOARD и WatchClipboard:.
Возвращает количество свободного места (в килобайтах) на указанном диске.
Пример:
\ возвращает 'TRUE', если свободного места \ на диске 'c:' осталось меньше 10 мегабайт \ и 'FALSE', если свободного места на диске \ 'c:' осталось больше 10 мегабайт FREE-SPACE: C 10000 <
Существует вариант этого слова с постфиксным расположением параметров:
\ для использования в консоли: CHAR <drv_letter> FREE-SPACE \ для использования в кронтабах: [CHAR] <drv_letter> FREE-SPACE \ или %CHAR <drv_letter> FREE-SPACE%
Скрывает иконку nnCron в системном трее, если она видима/ отображает иконку
nnCron в системном трее, если она скрыта
Команда HIDE-ICON выполняется с некоторой задержкой.
При использовании внутри определения задачи, это слово возвращает строку с именем текущей задачи.
Пример:
#( test_taskname NoActive Action: MSG: "Current task name: %CUR-TASK-NAME%" )#
Слово DISABLE-CRON переводит nnCron в режим остановки. Слово ENABLE-CRON, напротив, восстанавливает нормальный режим работы.
Важно отметить, что в режиме остановки задача, из которой nnCron был "усыплен", останется единственной работающей задачей (за исключением задач с опцией HyperActive). Это даст вам возможность программно "разбудить" nnCron из этой же задачи.
Пример:
#( test_suspend \ при появлении флага disable.flg переводим \ nnCron в режим остановки на десять минут WatchFile: "C:\TEMP\disable.flg" Action: BEEP: 250 500 DISABLE-CRON PAUSE: 00:10 ENABLE-CRON )#
Возвращает флаг TRUE (-1) если nnCron находится в режиме остановки и флаг FALSE (0), если nnCron находится в нормальном рабочем режиме. Испольуя это слово, вы, например, можете запускать задачу только в режиме остановки.
Пример:
#( test_suspend?
RunOnce NoDel HyperActive Rule: DISABLE-CRON? Action: MSG: "nnCron is disabled!" )#
Вызов функции Win32 API GetLastError(). Возвращает номер ошибки только что отработавшей команды, если в процессе ее работы произошел сбой и 0 если ошибки не произошло.
Слово GetLastError работает со следующими командами: START-APP:, START-APPW:, FILE-CREATE: (-COPY:, -MOVE:, -RENAME:, -CROP:, -WRITE:, -APPEND:), DIR-CREATE: (-DELETE:) и др.
Пример:
#( test_error NoActive Action: FILE-CREATE: "c:\xxx\test.sem" GetLastError IF MSG: "FILE-CREATE error: %GetLastError%" THEN )#
GetLastError не имеет смысла использовать со словом FILE-DELETE: (подробнее).
Постфиксное слово, которое генерирует случайные числа, используя мощный алгортим RAN4, описанный во втором издании книги "Numerical Recipes in C". В качестве аргумента слово RANDOM принимает число, которое определяет "верхнюю границу" диапазона генерируемых случайных чисел. Нижняя граница диапазона - 0, верхняя граница - значение аргумента минус единица. Это означает, что если вы указали число 1000 в качестве аргумента, то случайные числа будут генерироваться в диапазоне от 0 до 999.
Генератор случайных чисел инициализируется специальным словом START-SEQUENCE ( dcounter dseq# ), которое принимает в качестве аргументов два числа двойной длины: последовательность, использующуюся при генерации случайных чисел, и начальный номер числа в последовательности. При старте каждой задачи слово START-SEQUENCE автоматически получает уникальные аргументы, что обеспечивает уникальность генерируемых случайных чисел. Впрочем, вы можете инициализировать START-SEQUENCE и вручную, используя, например, количество миллисекунд, прошедших с момента старта операционной системы (GetTickCount). Вот как это делается:
GetTickCount DUP 2DUP START-SEQUENCE
Примеры:
\ генерируем случайные числа в диапазоне от 0 до 510 511 RANDOM #( test_random WatchHotKey: "${F5}" Action: \ START-SEQUENCE инициализируется автоматически \ выводим случайное число (диапазон 0 - 99) в сообщении: MSG: "Random: %100 RANDOM%" \ выводим случайное число (диапазон 0 - 99) на консоль: 100 RANDOM . CR )# #( test_random_manual WatchHotKey: "${F6}" Action: \ инициализируем START-SEQUENCE GetTickCount DUP 2DUP START-SEQUENCE \ выводим случайное число (диапазон 0 - 99) в сообщении: MSG: "Random: %100 RANDOM%" \ выводим случайное число (диапазон 0 - 99) на консоль: 100 RANDOM . CR )#
Постфиксное слово, которое принимает число в качестве аргумента и возвращает строку под соответствующим номером из подключенного "языкового" файла (см. описание переменной nncron.ini Language:).
Пример:
#( test_predefined_string NoActive Action: \ выводим на экран строку 'Зарегистрировать nnCron' \ на соответствующем языке MSG: "%19 RES%" )# #( test_predefined_string1 NoActive Action: \ выводим полное название текущего дня недели MSG: "%159 WDay@ + RES%" )#
Возвращает флаг TRUE (-1) если стартовавшая задача была "просрочена" и теперь запускается "при первой возможности" и флаг FALSE (0), если старт задачи являлся "плановым". Слово RunMissed? удобно использовать для выдачи запроса о целесообразности запуска просроченной задачи.
Пример:
#( test_runmissed
Time: 0 0
Rule: RunMissed? IF TQUERY: "Missed task. Launch it?" 5 Yes ELSE 1 THEN
Action:
\ ...
)#
"Обновляет" системный трей и удаляет из него "фантомные" иконки, которые могут там остаться, например, после принудителного прерывания процесса.
Пример:
#( test_close_miranda NoActive Action: PROC-CLOSE: "miranda32.exe" TRAY-REFRESH )#
WINAPI: <function_name> <dll_name>
Это слово позволяет "импортировать" в nnCron win32-функции из внешних DLL. Для этого, сразу после слова WINAPI: вы указываете имя функции и имя dll-файла, в котором эта функция находится.
WINAPI: MoveFileA KERNEL32.DLL WINAPI: RasDialDlgA RASDLG.DLL WINAPI: NetSessionEnum NETAPI32.DLL
В процессе импорта, указанная функция превращается в новое постфиксное слово, которым можно пользоваться во всех ваших задачах. Аргументы импортированной функции меняют свой порядок в соответствии с постфиксной нотацией.
До импорта:
your_function(1, 2, "string", 4);
После импорта:
4 Z" string" 2 1 your_function
Значение, которое возвращает импортированная функция, остается на стеке. Удалите его, если вы не собираетесь его использовать.
Пример:
#( convert_to_lower_case NoActive WINAPI: CharLowerBuffA USER32.DLL CREATE convert_buf 256 ALLOT Action: S" My TeSt StRiNg" convert_buf PLACE MSG: "Not converted: %convert_buf COUNT%" convert_buf COUNT SWAP CharLowerBuffA DROP MSG: "Converted: %convert_buf COUNT%" )#
Пользовательская переменная OnBalloonClick "перекрывает" значение переменной nncron.ini TrayIconBalloonClick: для текущей задачи (и только для неё). Таким образом, для текущей задачи вы можете установить свое собственное действие, которое будут происходить при щелчке мышью на подсказке BALLOON:.
Пример:
#( test_balloonclick NoActive : my-click \ делаем что-нибудь полезное: MSG: "You have destroyed my Balloon!" ; Action: ['] my-click OnBalloonClick !
BALLOON: "Test" "Click me!" )#
#( test_balloonclick1 NoActive Action: [NONAME \ делаем еще что-нибудь полезное: BEEP: 50 500 PAUSE: 200 BEEP: 50 500 NONAME] OnBalloonClick !
BALLOON: "New test" "Click me now!" )#