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

За 2019-02-03

[prg] Re[4]: реализация функции DateAdd в сценариях Jaws.

Добрый день, Nikita.
Ответ на письмо "[prg] Re[3]: реализация функц ..." от Sun, 3 Feb 2019 01:52
Спасибо за труды!
Если исходить из быстродействия, то реализация учета часовой зоны будет
предпочтительнее средствами языка Jaws. Правда, здесь тоже вызывается
SysGetTime для проверки наличия даты, ну, а затем простое определение
несуществующей даты и ее правка..
Нашел в сети как зарегистрировать в x64 системе поддержку языка сценария,
подключил msscript, нов это не помогло. Согласен, что с точки зрения
дистрибутизации такие методы не приемлемы. оставлю, как есть.
До свидания.

   2019-02-03 09:57:13 (#3603254)

[prg] Re[3]: реализация функции DateAdd в сценариях Jaws.

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

> Можно ли решить задачу посредствогм других служб или компонентов системы?

Теоретически можно посмотреть в сторону такой технологии, как Windows Script
Components, позволяющей зарегистрировать в системе компонент с нужной
функциональностью, к которому потом обращаться из скриптов JAWS.
Однако я не помню, позволяет ли это обойти проблему вызова из 64-разрядного
процесса, то есть это нужно проверить вам самому.
Кроме того, сразу усложнится процесс дистрибьюции таких скриптов, потому что
пользователям надо будет отдельно с правами администратора регистрировать
какой-то WSC, чтобы их использовать.

Ну и есть уже упомянутый мной немного топорный вариант через вызов из
скриптов JAWS скрипта на VBS с определёнными параметрами, после чего вызов
из скрипта на VBS функции в скриптах JAWS с передачей ей рассчитанного
значения.
Тут надо будет адаптировать архитектуру скриптов JAWS, разбив всю процедуру
на две функции, потому что у нас нет полного контроля за ответом скрипта
VBS, так что выполнение должно продолжится просто по факту обратного вызова.

То есть где-то в скриптах JAWS вы принимаете функцией три аргумента для
DateAdd, после чего вызываете скрипт на VBS, который всё считает, ну и потом
вызывает какую-то функцию JAWS, передавая ей результат, а ваша процедура
должна на этой функции подхватить значение и продолжить общую операцию.

Скрипт на VBS может выглядеть примерно так:

Set oArgs = WScript.Arguments
sInterval = oArgs(0)
iNumber = oArgs(1)
sDate = oArgs(2)
sDate = DateAdd (sInterval, iNumber, sDate)
Set oJawsApi = CreateObject ("FreedomSci.JawsApi")
oJawsApi.RunFunction("SayString (""" & sDate & """)")

Соответственно дёргаем этот скрипт из JAWS примерно таким образом:

Run (FormatString ("\"%1\" \"%2\" \"%3\" \"%4\"", GetJAWSSettingsDirectory
() + "\\DateAdd.vbs", sInterval, iNumber, sDate))

Ну и в этом примере скрипт на VBS отправляет рассчитанное значение в функцию
SayString скриптов JAWS, но у вас там будет какая-то ваша функция.

Задержка, с которой скрипт на VBS будет запускаться и возвращать ответ в
JAWS, может плавать в зависимости от загруженности системы и становиться
заметной.
Успехов. Никита.

   2019-02-03 01:53:17 (#3603218)