Отправляет email-рассылки с помощью сервиса Sendsay

[TC] Вопрос по скриптам: перемещение по предложениям и пауза

Здравствуйте.

Опять вопрос по языку скриптов JAWS. На этот раз у меня даже есть
некоторое сомнение, реализуемо ли необходимое мне средствами языка
скриптов.

Итак, мне нужно:
1. взять текущее предложение (GetSentence),
2. запустить некое приложение, например, "X" ( Run ("X") ),
3. дождаться внутри скрипта, пока отработает приложение "X" ...
4. всё это дело зациклевать начиная с п.1 и прервать цикл только при
нажатии какой-нибудь клавиши, пусть даже Ctrl.

Увы, с паузами в циклах у JAWS давняя проблема, и есть серьезное
опасение, что дожидаться отработки приложения "X" интерпритатор языка
скриптов вообще не умеет.
Может быть кто-нибудь из корифеев сможет подсказать какой-нибудь
обходной путь?

Ответить   Vladimir Dovydenkov Sun, 25 Jul 2004 13:26:17 +0400 (#197887)

 

Ответы:

Здравствуйте, Vladimir.

Мало данных о задаче...
Может и можно что-нибудь придумать.

Да, не умеет и с паузами проблема.

Что за предложения, можно ли взять весь текст?
Если да, можно сделать скрипт на windows script, там все нужное есть.

Ну а в jaws можно попробовать организовать данную задачу с помощью
функций ScheduleFunction и UnScheduleFunction, только не знаю будет
ли это все работать, но теоритически - да.

Ответить   Sun, 25 Jul 2004 17:10:40 +0400 (#197961)

 

Здравствуйте, Сергей.

Original Message СВ> Мало данных о задаче...

В общем-то, мне сложно что-то ещё добавить.
Здесь дело не в дополнительных функциях скрипта, а в одной
единственной задаче: как в цикле дождаться выполнения запущеного из
скрипта приложения.
То есть, допустим, в цикл "while" я вписываю запуск приложения "X".
И мне нужно, чтобы выполнение цикла и скрипта приостановилось до тех пор,
пока не завершится приложение "X".
Если нужны ещё какие-то данные, уточните, какие именно.

Original Message СВ> Что за предложения, можно ли взять весь текст?

Нет, нужно отрабатывать по одному придложению. В крайнем случае,
параграфу, но сути дела ведь это не меняет.

Original Message СВ> Ну а в jaws можно попробовать организовать данную задачу с помощью

Если я правильно понял описание, эта функция работает со временем.
Действительно, чисто теоретически, можно было бы периодически
опрашивать систему на предмет запущенности приложения "X", но, во-первых,
можно ли из скрипта узнавать запущено ли конкретное приложение (если
учесть, кстати, что у него нет окна), а, во-вторых, не ясно, как при
этом останавливать (задерживать) цикл, в котором крутится запуск
приложения.

Ответить   Vladimir Dovydenkov Sun, 25 Jul 2004 22:41:22 +0400 (#198165)

 

Здравствуйте, Vladimir.

Это понятно и таким образом эту задачу не решить. Функция run
запускает приложение и сразу возвращает управление в скрипт и как
известно задержки не работают.

Я просто думаю, если есть текст, например файл или jaws скрипт может
получить весь текст, то тогда эту задачу довольно просто решить на
VBScript или JScript, благо они встроены во все виндосы начиная с 98,
да и в 95 устанавливаются вроде.

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

Я как раз и хотел сказать, что бы сделать цикл на этих функциях.
Вы же хотели исползовать в while паузы?
Делаем функцию, которая будет установлена в shedule
Сама функция берет предложение, переходит на следующее, взятое
предложение запускает на обработку и в конце ставит время
ссрабатывания, заведомо сколько нужно для работы внешнего предложения
и все.
Через это время функция будет вызвана и все повториться.
Но это получится асинхронная работа, будет теряться время.

А может Вам запускать предложения пачками по штук 20-30, виндоус по
идее должен справиться.
или их нужно обрабатывать последовательно?

Ответить   Sun, 25 Jul 2004 23:30:03 +0400 (#198199)

 

Здравствуйте, Сергей.

Original Message СВ> если есть текст, например файл или jaws скрипт может

Нет, текст нужно скармливать фрагментами. Предложениями или параграфами.
Сергей, подскажите, пожалуйста, где можно нарыть документацию по "VBScript
или JScript"? Как-то эти скрипты прошли мимо меня...
Собственно, раз уж описаная мною задача не реализуется в JAWS, я
вполне могу написать нужную мне утилитку и на Делфях.

Ответить   Vladimir Dovydenkov Mon, 26 Jul 2004 01:52:24 +0400 (#198252)

 

Здравствуйте, Владимир!

Для полного комплекта нужна еще документация по
Microsoft Windows Script (Windows Script Host) и файлам с расширением
.hta...
Если нерусский язык для вас не проблема, то
Microsoft Windows Script 5.6 Documentation

http://www.microsoft.com/downloads/details.aspx?FamilyId=01592C48-207D-4BE1-
8A76-1C4099D7BBB9&displaylang=en

Конечно, пишите COM-сервер с двумя Properties Sintence и IsDone. В первое
помещаете предложение, а из второго читаете признак окончания его обработки.
Кстати тогда не надо будет в цикле каждый раз грузить внешнее приложение,
так как объект COM нужно загружать лишь один раз .
Успехов. Анатолий.

Ответить   "Anatoly" Mon, 26 Jul 2004 09:46:00 +0400 (#198342)

 

Здравствуйте, Anatoly.

Но он объект, все равно будет грузить внешнее приложение и столько раз
сколько будет предложений, получиться то же.

Интересно в jaws можно подключить прерывания COM-объекта? Если нет,
придется в цикле ждать пока появиться IsDone, но это будет тормозить
машину и невозможно будет работать с jaws. Или всетаки придеться
использовать setschedule для опроса признака окончания обработки.

Ответить   Mon, 26 Jul 2004 10:28:35 +0400 (#198412)

 

Сергей!
Я исходил из того, что сом-сервер есть тот код, который обрабатывает
предложение, полученное из Jaws...

<Интересно в jaws можно подключить прерывания сом-объекта?
Не уверен. Как я понимаю, Jaws обрабатывает предопределенный разработчиками
набор внешних событий, и я не смог отыскать поддержку событий произвольного
сом-объекта. Но можно порождать события, которые обрабатывает Jaws, например
нажатие клавиши или изменение clipboard (в последний можно записать условное
выражение типа: "У вас продается славянский шкаф..").

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

Ответить   "Anatoly" Tue, 27 Jul 2004 10:30:32 +0400 (#199182)

 

Здравствуйте, Vladimir.

Эти языки просты первый basic второй java (не путать с java апплетами)
Их Вы часто встречаете в интернет страничках. По функцианальности
практически равны, и тут что удобнее то и выбирай себе.
По-этому специальной митературы по ним я не искал, а просто скачал с
микрософтовского сайта хелп, в нем расписаны все функции, объекты с
краткими примерами. Ссылки не помню, если нужен мылте.

Можно конечно, но если нужно быстро и задача не такая уж сложная, я
предпочитаю всетаки вин скрипт.
Ряд преимуществ налицо, как говориться.
Встроены во все виндоус. Не нужна компиляция, не нужна специальная
среда (хватит блокнота), прост в обращении, поддерживает работу с COM объектами
и т. д.

Вот попробуйте создайте в блокноте файл с каким нибудь именем и
рассширением .js и поместите туда три следующие строчки:
var ws = WScript.CreateObject ("WScript.Shell");
var d = new Date();
ws.Popup("Привет, сейчас\n:" + d);

Вот и все, пока!

Ответить   Mon, 26 Jul 2004 09:50:18 +0400 (#198389)