Работа с окнами (1)

(По материалам Freedom Scientific Developer Network)
Дата публикации:2005
Twitter Facebook Vkontakte

Здесь приведено описание втроенных функций и скриптов JAWS для работы с различными окнами операционной системы MS Windows. Стоит напомнить, что под «окнами» в операционной системе MS Windows понимаются не только окно самого приложения, но и кнопки, списки, поля редактирования и практически все элементы управления в диалоговых панелях. Любое окно специфицируется его дескриптором, который является уникальным числовым идентификатором окна. Если переменной в скриптах JAWS предполагается присваивать дескриптор, то эта переменная должна иметь тип Handle. В диалоговых окнах элементы управления, которые тоже являются окнами (в данном случае дочерними), имеют, кроме дескриптора, идентификатор элемента управления (control ID). Все окна одного приложения связаны родительско-дочерними отношениями. Главное окно приложения не имеет родительского окна, но, как правило, имеет одно или несколько дочерних окон. Каждое дочернее окно имеет одно родительское и может иметь одно или несколько дочерних окон, а может и не иметь их. Для того чтобы разобраться в иерархии окон, и служат многие из приведенных ниже функций.

Скрипт CloseButton

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

Возвращаемое значение: Void

Параметры: отсутствуют

Этот скрипт доступен в следующих версиях:

  1. PAC Mate 1.10 и более поздних

Скрипт CloseDocumentWindow

Описание: Приложение, имеющее многодокументный интерфейс, может содержать открытыми несколько документов или рабочих областей (например, MS Word). Будучи вызванным, этот скрипт закрывает окно одного из таких документов, не завершая работы всего приложения.

Возвращаемое значение: Void

Параметры: отсутствуют

Этот скрипт доступен в следующих версиях:

  1. PAC Mate 1.10 и более поздних
  2. JAWS 4.51 и более поздних

Функция EnumerateChildWindows

Описание: Эта функция вызывает определённую пользователем функцию для каждого дочернего окна, начиная с указанного. Вызываемая функция должна быть определена так:

Int Function SomeName (Handle hwnd)

Эта функция должна возвращать True, если необходимо продолжить перебор дочерних окон, или False, если этот перебор следует прекратить.

Возвращаемое значение: Int, True, если перебор дочерних окон прошёл успешно; False, если перебор был прерван из-за того, что функция обратного вызова возвратила False.

Параметр 1:

Handle, дескриптор окна, с которого начнётся перебор. Этот параметр является обязательным.

Параметр 2:

String, имя функции, которая будет вызываться для каждого дочернего окна. Этот параметр является обязательным.

Эта функция доступна в следующих версиях:

  1. PAC Mate 1.10 и более поздних
  2. JAWS 4.51 и более поздних

Пример

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

Include "HjConst.jsh"
Script EnumAndSayChildWindows()
Var
	Int result
	let result =EnumerateChildWindows (GetParent (GetFocus ()), "EnumFunc")
EndScript

Int Function EnumFunc (Handle hWnd)
;сообщаем информацию о дочернем окне и читаем текст в нём
SayWindowTypeAndText (hWnd)return TRUE
EndFunction

Функция FindDescendantWindow

Описание: Ищет окно-потомок с указанным ID элемента управления.

Возвращаемое значение: Handle, дескриптор найденного окна. Ноль возвращается, если окно не было найдено.

Параметр 1:

Handle, дескриптор родительского окна, в котором будет произведён поиск. Этот параметр является обязательным.

Параметр 2:

Int, ID элемента управления, окно которого нужно найти. Этот параметр является обязательным.

Эта функция доступна в следующих версиях:

  1. PAC Mate 1.10 и более поздних
  2. JAWS 4.51 и более поздних

Функция FindSelectedRadioButton

Описание: Обычно радиокнопки собраны в одну группу (блок), что позволяет пользователю сделать выбор "один из многих". Эта функция, начиная с радиокнопки, дескриптор окна которой передан в качестве параметра, перебирает указанное количество последовательно размещённых радиокнопок, чтобы найти отмеченную радиокнопку.

Возвращаемое значение: handle, дескриптор окна выбранной радиокнопки или 0, если ничего не найдено.

Параметр 1:

Handle, первая радиокнопка в последовательности (блоке) радиокнопок. Этот параметр является обязательным.

Параметр 2:

int, число радиокнопок в группе (блоке). Этот параметр является обязательным.

Эта функция доступна в следующих версиях:

  1. PAC Mate 2.20 и более поздних

Функция FindTopLevelWindow

Описание: Ищет окно верхнего уровня с указанным классом окна и/или названием окна. Если вы не желаете производить поиск по какому-нибудь из аргументов, то используйте пустую строку "" для этого аргумента.

Возвращаемое значение: Handle, дескриптор найденного окна или ноль, если ничего не найдено.

Параметр 1:

String, наименование класса окна для поиска. Этот параметр является обязательным.

Параметр 2:

String, название окна, которое будет использовано для поиска. Этот параметр является обязательным.

Эта функция доступна в следующих версиях:

  1. PAC Mate 1.10 и более поздних
  2. JAWS 4.51 и более поздних

Функция FindWindow

Описание: Эта функция начинает работу в указанном окне и ищет среди дочерних окон этого окна такое, которое имеет указанные класс окна или название окна. Если дескриптор равен нулю, то осуществляется поиск окна верхнего уровня, что эквивалентно действию функции FindTopLevelWindow. Используйте пустую строку в качестве названия окна или вообще не используйте этот параметр, чтобы найти окно с указанным классом и любым именем. Для поиска окна только по названию, поставьте пустую строку в качестве класса окна.

Возвращаемое значение: Handle, дескриптор найденного окна.

Параметр 1:

Handle, окно, где начинается поиск. Этот параметр является обязательным.

Параметр 2:

String, имя класса окна для поиска. Этот параметр является обязательным.

Параметр 3:

String, название окна для поиска. Этот параметр является необязательным.

Эта функция доступна в следующих версиях:

  1. PAC Mate 1.10 и более поздних
  2. JAWS 4.51 и более поздних

Функция FocusChangedEvent

Описание: Событийная функция срабатывает, когда фокус ввода перемещается от одного элемента к другому. В качестве параметров она получает дескрипторы предыдущего и текущего окон. Эта функция вызывает SayWindowTypeAndText, SayFocusedWindow или SayFocusedObject в таком порядке, чтобы обеспечить должным образом озвучивание активного элемента.

Возвращаемое значение: Void

Параметр 1:

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

Параметр 2:

Handle, дескриптор окна, потерявшего фокус. Этот параметр является обязательным.

Эта функция доступна в следующих версиях:

  1. PAC Mate 1.10 и более поздних
  2. JAWS 4.51 и более поздних

Функция ForegroundIconicEvent

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

Возвращаемое значение: Void

Параметр 1:

Handle, дескриптор текущего окна на переднем плане без фокуса ввода. Этот параметр является обязательным.

Эта функция доступна в следующих версиях:

  1. PAC Mate 1.10 и более поздних
  2. JAWS 4.51 и более поздних

Функция ForegroundWindowChangedEvent

Описание: Событийная функция срабатывает всякий раз, когда на передний план выходит новое реальное окно. Реальное окно (real window) - это окно, имеющее заголовок. Для большинства приложений реальное окно - это главное окно программы или окно основного диалога.

Замечание: как правило, в файле default.jss в теле функции не содержится ни одного оператора, то есть она является пустой.

Возвращаемое значение: Void

Параметр 1:

Handle, дескриптор нового окна. Этот параметр является обязательным.

Эта функция доступна в следующих версиях:

  1. PAC Mate 1.10 и более поздних
  2. JAWS 4.51 и более поздних

Функция GetAppletName

Описание: Возвращает имя апплета указанного окна.

Возвращаемое значение: String, имя апплета.

Параметр 1:

Handle, дескриптор интересующего окна. Если не используется, то подразумевается текущее окно. Этот параметр не является обязательным.

Эта функция доступна в следующих версиях:

  1. JAWS 5.00 и более поздних

Функция GetAppMainWindow

Описание: Возвращает дескриптор главного окна текущего приложения.

Возвращаемое значение: Handle, дескриптор главного окна текущего приложения.

Параметр 1:

Handle, дескриптор окна, с которого функция начнёт поиск главного окна приложения. В качестве этого параметра часто выступает вызов функции GetCurrentWindow. Этот параметр является обязательным.

Эта функция доступна в следующих версиях:

  1. PAC Mate 1.10 и более поздних
  2. JAWS 4.51 и более поздних

Функция GetControlID

Описание: Возвращает ID элемента управления для указанного дочернего окна в диалоге. Все элементы управления, например, списки, поля редактирования радиокнопки и так далее, в диалоговых окнах имеют уникальный числовой ID. Дочерние окна, содержащие статический текст, все имеют одинаковый ID.

Возвращаемое значение: Int, Числовой ID элемента управления в диалоговом окне или ноль, если диалоговое окно не является активным.

Параметр 1:

Handle, дескриптор дочернего окна, о котором нужно получить информацию. Этот параметр является обязательным.

Эта функция доступна в следующих версиях:

  1. PAC Mate 1.10 и более поздних
  2. JAWS 4.51 и более поздних

Функция GetCurrentControlID

Описание: Возвращает ID элемента управления в активном дочернем окне в диалоге.Все элементы управления, например, списки, поля редактирования, радиокнопки и так далее, в диалоговых окнах имеют уникальный числовой ID. Дочерние окна, содержащие статический текст, все имеют один и тот же ID. Эта функция выполняет ту же задачу, что и функция GetControlID, но она не требует указания дескриптора дочернего окна.

Возвращаемое значение: Int, числовой ID активного элемента управления в диалоговом окне или ноль, если диалоговое окно не является активным.

Параметры: отсутствуют

Эта функция доступна в следующих версиях:

  1. PAC Mate 1.10 и более поздних
  2. JAWS 4.51 и более поздних

Функция GetCurrentWindow

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

Возвращаемое значение: Handle, дескриптор активного окна.

Параметры: отсутствуют

Эта функция доступна в следующих версиях:

  1. PAC Mate 1.10 и более поздних
  2. JAWS 4.51 и более поздних

Функция GetFirstChild

Описание: Определяет первое дочернее окно, которое могло быть создано указанным родительским окном. Эта функция бывает полезной при необходимости просмотреть набор (стек) дескрипторов окон, чтобы найти дочерние окна.

Возвращаемое значение: Handle, дескриптор первого дочернего окна или ноль, если окно не было обнаружено.

Параметры:

Параметр 1:

Handle, дескриптор окна, с которого эта функция начинает свою работу. В качестве этого параметра может выступать переменная типа handle или функция, возвращающая значение типа handle. Этот параметр является обязательным.

Эта функция доступна в следующих версиях:

  1. PAC Mate 1.10 и более поздних
  2. JAWS 4.51 и более поздних

Функция GetFirstFocusableChild

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

Возвращаемое значение: Handle, дескриптор первого дочернего окна, не являющегося статическим элементом, или ноль, если подобное дочернее окно не было обнаружено.

Параметры:

Параметр 1:

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

Эта функция доступна в следующих версиях:

  1. PAC Mate 2.0 и более поздних

Функция GetFirstWindow

Описание: Возвращает дескриптор первого окна, которое находится на том же логическом уровне, что и окно, дескриптор которого передан в качестве параметра. Используется для того, чтобы добраться до начальной точки того же логического уровня.

Возвращаемое значение: Handle, дескриптор первого окна, находящегося на том же логическом уровне в стеке окон, или ноль, если такое окно не было найдено.

Параметр 1:

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

Эта функция доступна в следующих версиях:

  1. PAC Mate 1.10 и более поздних
  2. JAWS 4.51 и более поздних

Функция GetFocus

Описание: Возвращает дескриптор окна, содержащего фокус ввода. Данная функция всегда ищет PC курсор или выделенный цветом объект, который имеет фокус. Какой из курсоров является активным в данный момент, для работы этой функции не имеет значения. В противоположность этому, функция GetCurrentWindow является менее сообразительной. Она просто получает дескриптор окна, в котором находится активный курсор.

Возвращаемое значение: Handle, дескриптор окна, содержащего фокус ввода.

Параметры: отсутствуют

Эта функция доступна в следующих версиях:

  1. PAC Mate 1.10 и более поздних
  2. JAWS 4.51 и более поздних


Распространение материалов сайта означает, что распространитель принял условия лицензионного соглашения.
Идея и реализация: © Владимир Довыденков и Анатолий Камынин,  2004-2019