[TC] AutoStartEvent, или как не надо делать (предупреждение Сергея Туманяна)
Vande omentaina, Tiflocomp!
Пересылаю в лист сообщение от Сергея Туманяна, опубликованное им в
рассылке по скриптам 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
Обратите внимание, какое количество инициализаций и всего прочего проходит в
этой функции. Вы всё это отправляете к чёрту, замениву эту функцию тем
перлом, который я привёл выше и потом удивляетесь почему у Вас лезут глюки.
Не говоря уже о том, что вообще-то корректно написанные скрипты которые
будут вызывать эту функцию из файла по умолчанию просто будут молчать как
рыба об лёд ибо Вы выключаете речь, а включить её обратно не удосуживаетесь.
Ещё раз, не делайте так, чтобы не огребать проблем в губках. Если Вы не
знаете или не умеете сделать такую вещь правильно и корректно, то лучше не
делайте её вообще ибо потом огребя проблемы будете ходить по рассылкам и
спрашивать "А почему у меня губки не работают?". Главная беда, что
последствия вылезут потом в таких местах, что Вы даже не сможете сообразить
почему они там вылезли и редко кто сможет сообразить в чём тут дело.
Я не могу привести решения для этой задачи потому что эта функция довольно
динамично меняется от версии к версии и и предложенное мной корректное
решение будет очень некорректно в другой версии, а люди устроены таким
образом, что вне зависимости от моих предупреждений наверняка потащат моё
решение в другие версии и обгадят их этим. Чтобы такого не было я не привожу
решения и не буду его приводить, если Вы не знаете, не понимаете, не умеете,
не делайте этого, чтобы потом не оказатся в дурацком положении. Надеюсь
кто-нибудь перепостит это моё предупреждение по другим техническим листам,
чтобы все были предупреждены о последствиях этого.
До свидания.