Здравствуйте, 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, может плавать в зависимости от загруженности системы и становиться
заметной.
Успехов. Никита.