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

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

Здравствуйте, industry.comp.tiflocomp.programming!
Стоит задача перевести с гринвича день и час на местное время. Она была
решена средствами сценариев Jaws, но хотелось бы ее оптимизировать
посредством функции DateAdd из jscript или vbscript.
У меня не получается создать соответствующий объект с помощью
CreateObject ("Scripting....").

Спасибо за рекомендации!

Ответить   Sun, 27 Jan 2019 17:30:08 +0700 (#3602421)

 

Ответы:

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

Это может оказаться не лучшим решением, потому что, насколько я помню,
ScriptControl в Windows везде 32-разрядный, так что его не удавалось
корректно инициализировать из 64-разрядного процесса. То есть скрипты не
могли использовать WSH в 64-разрядных версиях JAWS. Может быть вы на это и
напоролись, если работаете на 64-разрядной системе.
В принципе, реализация должна выглядеть примерно так:

string Function DateAdd (string sInterval, int iNumber, string sDate)
var
object oScriptControl
let oScriptControl = CreateObject("ScriptControl")
If !oScriptControl Then
Return
Else
let oScriptControl.Language = "vbscript"
Return oScriptControl.Eval("DateAdd(\""+sInterval+"\", "+iNumber+",
\""+sDate+"\")")
EndIf
EndFunction

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

Ответить   Tue, 29 Jan 2019 18:00:25 +0300 (#3602719)

 

Добрый день, Nikita.
Ответ на письмо "[prg] Re: реализация функции ..." от Tue, 29 Jan 2019
18:00
Спасибо, Анатолий!
Увы, у меня x64 разрядная система, а скрипт должен работать везде ез
дополнительных настроек.
Можно ли решить задачу посредствогм других служб или компонентов системы?
Дело в том, что процедура может вызываться часто и не хотелось бы
перегружать работу сценария.
Спасибо!
До свидания.

Ответить   Wed, 30 Jan 2019 12:13:21 +0700 (#3602769)

 

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

Ответить   Sun, 3 Feb 2019 01:52:37 +0300 (#3603218)

 

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

Ответить   Sun, 03 Feb 2019 13:48:21 +0700 (#3603254)

 

всем привет.

Есть надобность интеграции синтезатора RHVoice в один .net проект.

Делал ли кто нибудь обертку над библиотекой RHVoice? если да, то может ли
кто нибудь поделится решением?

спасибо.

Ответить   Wed, 20 Feb 2019 17:59:30 +0400 (#3605656)

 

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

Начал писать обертку над RHVoice ввиду его отсутствия в общем доступе.

замечания, помощь в доработке функционала и исправлении ошибок
приветствуется.

ссылка на репозиторий
https://github.com/beqabeqa473/RHVoice-cs-wrapper

Ответить   Sat, 23 Feb 2019 19:41:32 +0400 (#3606074)

 

Приветствую всех.
А чем вас не устраивает использование этого синтезатора через SAPI?
Успехов. Анатолий.
Исходное сообщение > Начал писать обертку над RHVoice ввиду его отсутствия в общем доступе.

Ответить   "i_chay" Sat, 23 Feb 2019 21:14:02 +0300 (#3606078)

 

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

через sapi не устраивает, потому что приложение будет запускатся на разных
компьютерах и я не думаю что все захотят устанавливать дополнительное ПО.

Ответить   Sun, 24 Feb 2019 02:45:32 +0400 (#3606110)

 

Приветствую всех.
О каком дополнительном ПО идет речь?
Начиная с Windows XP, MS SAPI 5.x является неотъемлемым компонентом
операционной системы.
Соответственно, и RHVoice для Windows реализован как движок (engine) для
SAPI.

Успехов. Анатолий.
Исходное сообщение > через sapi не устраивает, потому что приложение будет запускатся на разных

Ответить   "i_chay" Sun, 24 Feb 2019 07:14:14 +0300 (#3606119)