BETA ISLAND project CROKIK Ltd Item F19 CROKIK Ltd BETA ISLAND project

КОД СТРАНИЦЫ : F19

Содержание : TheBat! и запуск внешней программы по приходу письма

Q. При поступлении новой почты в Бате предусмотрены два вида сигнализации: визуальная -включение Mail Ticker и анимация иконки и звуковая - выдача звукового фрагмента, но только из wav-файла. Обработчик сообщений Бата позволяет задать действие (запуск приложения) в ответ на _каждое_ прошедшее через фильтр письмо. А как организовать _однократный_ запуск внешнего приложения (или группы действий) по факту прихода _хотя бы одного письма_? Это может потребоваться при автоматическом запуске Бата по расписанию с выработкой реакции в случае прихода какой-нибудь почты.

А. Эта проблема распадается на три этапа:
1. Настройка Бата на работу в автоматическом режиме
2. Создание какого-то внешнего признака, появляющегося при приеме хотя бы одного письма
3. Написание внешней управляющей программы для опроса этого признака лишь при окончании текущего сеанса связи и для запуска приложения или группы приложений.

Этап 1. Для настройки Бата на автоматический режим работы по расписанию нужно, во-первых, добавить параметры в командную строку вызова /NOLOGO /CHECKALL. Это даст возможность вызвать Бат, опросить почту и тут же выйти при отсутствии новой принятой почты. Во-вторых, нужно установить ряд опций поддержки автоматики. Например, для режима доступа к хосту через dial-up:
** Папка/Свойства, окно "Установки пользователя"
- вкладка "Транспорт" - включена опция "Совмещенная доставка" (полезно иметь, если в процессе работы с принятой почтой на нее и отвечаешь)
- вкладка "Установки" - для режима dial-up снять обе опции проверки почтового ящика (управление идет по запуску из командной строки)
- вкладка "Звук" - можно установить запуск желаемого wav-файла при приходе почты
** Свойства/Подключение и Администрирование, окно с тем же именем
- вкладка "Подключение", опция "При соединении с Интернет использовать Средства Удаленного Доступа" включить обе функции "Завершать соединение по окончании передачи почты" и "Использовать существующее соединение". Время между прозвонками поставить минимальное.

Этап 2. В качестве признака прихода почты можно использовать параметр времени создания некоторого специального файла, например, Incoming Mail.txt. При инициализации автоматической работы Бата время создания файла устанавливается hh:mm:ss = 00:00:00, при приходе почты специальный обработчик обновляет файл Incoming Mail.txt, ставя реальное время обновления, отличное от точной полуночи. Внешняя программа отлавливает момент завершения очередного сеанса связи по признаку появления и пропадания окна с именем "Установлена связь с <имя_провайдера>" (или "Прием почты" Бата), а уж затем опрашивает время создания файла. Если время создания файла отлично от нуля, значит пришло хотя бы одно письмо и можно запускать внешнее приложение. После этого время создания файла сбрасывается на ноль. Короче, алгоритм обработки файла Incoming Mail.txt выглядит как
if (hh:mm:ss(Incoming Mail.txt) != 00:00:00) { // пришла новая почта
hh:mm:ss(Incoming Mail.txt) = 00:00:00
запуск всего чего нужно (я запускаю музыкальный rmi-фрагмент)
}

Теперь о том, какой должен быть обработчик события для обновления файла Incoming Mail.txt. Прежде всего, это файл нужно просто где-нибудь создать средствами Проводника, например, в каталоге почтового ящика. Затем создается правило обработки. Перейдите в окно пункта меню Ящик/Сортировщик сообщений и создайте для Входящей почты новое правило. например, с именем "Приход новой почты". Это правило нужно поставить _первым_. Параметры этого правила таковы:

- вкладка "Правила": Исходная папка - Inbox, Переместить сообщения в папку - Inbox, сигнальная строка - @ (либо для Отправителя, либо для Получателя). Этот символ присутствует в любом адресе, так что каждое письмо этому правилу будет удовлетворять.
- вкладка "Альтернативы": пусто
- вкладка "Действия": активна единственная опция "Экспортировать сообщение в файл" с параметром "Переписать существующий файл". В качестве объекта для экспорта указать уже упоминавшийся файл Incoming Mail.txt.
- вкладка "Свойства": сделать активной опцию "Продолжить работу последующих фильтров"

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

Этап 3. И наконец, нужна внешняя управляющая программа для связывания всего этого вместе. Программа должна в циклическом режиме опрашивать факт появления окна удаленной связи с хостом (а можно и окна "Прием почты" Бата) и при закрытии окна (окончание сеанса связи) опрашивать время создания файла Incoming Mail.txt, запуская или нет соответствующую реакцию на приход почты (см. Этап 2). Фактически нужен набор пакетно выполняемых под Windows команд (как *.bat файлы в горячо любимом ДОСе). Для этой цели существует несколько написанных приложений (см. www.listsoft.ru). Можно порекомендовать два из них:
- ExecutIt фирмы Webster Image, http://www.webster-image.com и
- WinBatch фирмы Wilson WindowWare, http://www.windowware.com , http://www.winbatch.com

Обе программы - shareware, так что проблему легализации и кряковости каждый решает индивидуально.

Первая программа хороша тем, что она работает абсолютно невидимо. Однако в связи с тем, что авторы на некотором этапе бросили ее сопровождение, она имеет глюки и не содержит средств отладки. Функциональные возможности системы команд для скрипта - ниже среднего.
Вторая программа, WinBatch, это просто лебединая песня. Ее функциональные возможности просто потрясают. При инсталлированном пакете написанный скрипт стартует как обычный exe-файл. До 98 года пакет имел простейший отладчик, начиная с версий 98 года выпускается WinBatch Studio - интегрированная оболочка с отладчиком по идеологии Delphi и Visual C++. Программа может управлять всем: окнами, файлами, меню и содержит массу других возможностей. Прекрасно сделанный интерактивный Help (правда на английском). Словом - рекомендую. На многочисленных ftp-серверах пакет хранится с именем wb9?*32i.zip, где ? - соответствует году, а * - букве релиза. Например, очень ходовой был wb96d32i.zip от 96 года. Сейчас, насколько я знаю, вышел wb99k32i.zip (на конец лета 1999 г.).

Дополнительно можно скачать файл WinBatchBat.zip, в который входят:
- Описание алгоритма.txt: описывает работу скрипта, написанного средствами WinBatch для реализации расширенного варианта приведенного выше алгоритма (см. Bat Development.wbt)
- Алгоритм автоматического запуска.doc: файл Word97 с граф-схемой алгоритма цикла опроса состояния Бата
- Bat Development Pub.wbt - основной скрипт файл работы с Батом
- Bat Auto Request Pub.wbt - маленький скрипт для вызова Bat Development.wbt при автоматической работе по расписанию
- Bat Look&Send Pub.wbt - маленький скрипт для вызова Bat Development.wbt при ручном вызове Бата для чтения, обработки почты и написания ответов.

Николай Корнев
mailto:kornev@lmail.loniis.spb.su или mailto:nak@galnik.convey.ru.

Источник : Лист thebat@egroups.com

 

 


EMAIL

about project

(c) G.K.Novikov ( Russia / Saint-Petersburg )

http://www.home.ch/~spaw2469

http://welcome.to/panoptikum

02.02.00

WEB

Offshore Merchant Account | Invitations Wedding | Shades | Webdesign Forum | Reliance Service