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

Screen reader JAWS for Windows Russian

[JFWRus] Как найти окно

Всем привет.

В приложении есть два окна с одинаковым классом "RichEdit20A", но handle и control
ID у них разные. Как может выглядеть скрипт, по которому можно было бы различать
эти окна и перемещать курсор из одного в другое?

XXX___-?O
All fled, all done
So lift me on the pyre.
The feast is over
And the lamps expire.
Всяких приятностей! flavour [собака] mlbox.ru

***
Это сообщение No4213
было разослано для 316 участников дискуссионного листа
[JFWRus] Как найти окно

Ответить   "Cuthbert" Tue, 27 Jun 2006 04:10:34 +0400 (#565642)

 

Ответы:

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

Если ID окон не меняется от запуска к запуску приложения и не равен 0,
то введите константы с этими ID и проверяйте ID текущего окна приблизительно
так
const
/*
должен быть ID первого окна
*/
FIRST_RICHEDIT = 1001 ,
/*
должен быть ID второго окна
*/
SECOND_RICHEDIT = 1002

/* ... */
SCRIPT NASANavigationSystem()
var
handle hwnd

let hwnd = GetCurrentWindow()
if GetWindowClass (hwnd) == "RichEdit20A" then
if GetControlID (hwnd) == FIRST_RICHEDIT then
SayString ("Планета Марс.")
elif GetControlID (hwnd) == SECOND_RICHEDIT then
Saystring ("Планета Венера.")
else
SayString ("Неизвестная планета.")
EndIf
EndIf
EndScript

Успехов. Анатолий.

***
Это сообщение No4219
было разослано для 317 участников дискуссионного листа
[JFWRus] Re: Как найти окно

Ответить   "i_chay" Wed, 28 Jun 2006 09:21:53 +0500 (#566112)

 

Приветствую, i_chay!

А не проще ли по хандлам проверять?)

Ответить   Wed, 28 Jun 2006 09:27:43 +0400 (#566125)

 

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

Владельцы звуковой карты mediaforte подскажите как решить проблемы которые
возникают с ней и джавзом?
А именно нечеткость голоса (с треском) и некоторое замедление темпа речи у
комерческой мышки.

Система winxpsp2 p3800 256 mb

С уважением
Андрей

***
Это сообщение No4221
было разослано для 317 участников дискуссионного листа
[JFWRus] mediaforte Re[3]: Как найти окно

Ответить   Wed, 28 Jun 2006 13:44:04 +0600 (#566243)

 

Привет, Андрей.

Они меняются при каждом запуске приложения.
Успехов. Анатолий.

***
Это сообщение No4222
было разослано для 317 участников дискуссионного листа
[JFWRus] Re[3]: Как найти окно

Ответить   "i_chay" Wed, 28 Jun 2006 14:05:24 +0500 (#566266)

 

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

Для большей универсальности я бы написал, заменив строку:

на строку:
if (GetWindowClass (hwnd) == "RichEdit20A") || (GetWindowClass (hwnd) == "RichEdit20W")
then
поскольку Вы не знаете является ли данное окно юникодовским или нет. Для большей
скорости будет полезно в таком случае вынести вызов функции в отдельную строку
с присваиванием переменной, например так:
let strClass = GetWindowClass (hwnd)
if (strClass == "RichEdit20A") || (strClass == "RichEdit20W") then
таким образом Вы экономите один вызов функции GetWindowClass выигрывая таким
образом в скорости.

Возможное другое решение состоит в том, чтобы использовать функцию StringContains,
но в данном случае выйгрыш весьма сомнителен.

До свидания.

***
Это сообщение No4223
было разослано для 317 участников дискуссионного листа
[JFWRus] Re[2]: Как найти окно

Ответить   Wed, 28 Jun 2006 12:26:58 -0700 (#566297)