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

Screen reader JAWS for Windows Russian

[JFWRus] AutoStartEvent, или как не надо делать (предупреждение Сергея Туманяна)

Vande omentaina, comp.soft.others.jfwrus-list@subscribe.ru!
Пересылаю в лист сообщение от Сергея Туманяна, опубликованное им в
рассылке по скриптам JAWS и другим языкам программирования.
Многим зачем-то нужно сменить приветствие JAWS по умолчанию. Читайте
ниже, почему не нужно прислушиваться к первому же совету по этому
поводу. Скажу от себя (для тех, кто по каким-то причинам не любит
и не доверяет Сергею Туманяну), что в данном случае я компетентен заявить, что
Сергей прав на все 100%.

Здравствуйте, участники рассылки.

Итак, я тут на такое нарвался, что просто нет слов. Именно поэтому я и пишу
этот опус.

Некто, к сожалению я не знаю кто, было бы полезно этому автору сильно дать
по голове для того чтобы убрать приветствие губок или заменить его своим
предлагает такое решение:
Void Function AutoStartEvent ()
SayString ("Hello.")
SpeechOff()
EndFunction
в файле по умолчанию.

Этого делать нельзя ни при каких обстоятельствах. Почему? Да потому что
сделав такое Вы ломаете к чёртовой матери огромную часть функционала губок.
Вот как скажем выглядит эта функция в губках версии 10:
Void Function AutoStartEvent ()

let GlobalSharedDefaultJCFFile =
GetSharedSettingsDirectory()+cScDoubleBackSlash+DefaultJCFFile

let gbSayAllTemporarilyToggledToSAPI = false

let gbAppendedToClipboard = FALSE

let g_JavaIgnoreNextActiveItemChange = 0

let GlobalMousePixel = 3

FrameClearValues ()

VirtualStart ()

TandemStart()

let gbUsingRemotePACMate = UsingRemotePACMateBX()

if (DefaultFirstTime == 0) then

let DefaultFirstTime = 1

Let GITblHeaders=TBL_HEADER_BOTH;Default behavior

If (!IsJFWInstall()) then

;SayFormattedMessage (ot_app_start, cmsgAppStart1_L, cmsgAppStart1_S)

endIf

endIf ; DefaultFirstTime == 0

If BrailleInUse () then

Let GIBrailleActive = on

BrailleStart ()

if gbUsingRemotePACMate then

ScheduleFunction("ShowBrlMsgRemoteModeOn",5)

EndIf

EndIf

InitializeMSNSupport();For MSN Messenger Contact speaking.

let BackForward=0

let giRestoreFormsModeAfterVirtualizeCPS=FALSE

EndFunction

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

Ещё раз, не делайте так, чтобы не огребать проблем в губках. Если Вы не
знаете или не умеете сделать такую вещь правильно и корректно, то лучше не
делайте её вообще ибо потом огребя проблемы будете ходить по рассылкам и
спрашивать "А почему у меня губки не работают?". Главная беда, что
последствия вылезут потом в таких местах, что Вы даже не сможете сообразить
почему они там вылезли и редко кто сможет сообразить в чём тут дело.

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

До свидания.

Ответить   Tue, 12 Oct 2010 23:02:50 +0300 (#1240234)