Partilhar via


Diretrizes de implementação IAccessibleEx

O núcleo de automação da interface do usuário da Microsoft pode recuperar todas as propriedades do Microsoft Ative Accessibility para qualquer objeto acessível exposto por um servidor por meio da interface IAccessible . Ao implementar IAccessibleEx, você deve expor apenas os aspetos da funcionalidade da interface do usuário que não podem ser expostos de outra forma através das propriedades existentes do Microsoft Ative Accessibility. Este tópico identifica as propriedades de Automação da Interface do Usuário e os padrões de controle que representam a funcionalidade da interface do usuário que não tem contrapartida no Microsoft Ative Accessibility—eles são as propriedades e os padrões de controle que você pode expor em uma implementação IAccessibleEx .

Este tópico contém as seguintes seções:

Propriedades

As seguintes propriedades de Automação da Interface do Usuário não se sobrepõem à funcionalidade do Microsoft Ative Accessibility. Eles podem ser usados em uma implementação IAccessibleEx :

  • AriaProperties
  • AriaRole
  • AutomationId
  • ClassName
  • ClickablePoint
  • Controladorpara:
  • Cultura
  • DescritoPor
  • FluxosPara
  • FrameworkId
  • IsContentElement
  • IsControlElement
  • IsDataValidForForm
  • IsRequiredForForm
  • Status do item
  • Tipo de Item
  • RotuladoPor
  • LocalizedControlType
  • Orientação

Embora as propriedades AcceleratorKey e AccessKey UI Automation se sobreponham à propriedade accKeyboardShortcut Microsoft Ative Accessibility, você ainda pode usá-las em uma implementação IAccessibleEx para controles que têm uma tecla de acesso e um acelerador. Da mesma forma, a propriedade ControlType UI Automation se sobrepõe à propriedade accRole do Microsoft Ative Accessibility, mas você ainda pode usá-la em uma implementação IAccessibleEx para definir uma função mais específica para um controle.

Como as seguintes propriedades do elemento de automação da interface do usuário já são cobertas pelas propriedades do Microsoft Ative Accessibility, não há necessidade de usá-las em uma implementação IAccessibleEx .

Propriedade de automação da interface do usuário Equivalente do Microsoft Ative Accessibility
BoundingRectangle accLocalização
HasKeyboardFocus accState, STATE_SYSTEM_FOCUSED
EstáAtivado accState, STATE_SYSTEM_UNAVAILABLE
IsKeyboardFocusable accState, STATE_SYSTEM_FOCUSABLE
IsPassword accState, STATE_SYSTEM_PROTECTED
HelpText accAjuda
Nome accName
NativeWindowHandle WindowFromAccessibleObject
IsOffscreen accState, STATE_SYSTEM_INVISIBLE/STATE_SYSTEM_OFFSCREEN
ProcessId Fornecido pelo núcleo de automação da interface do usuário

 

Para qualquer propriedade de automação da interface do usuário sem suporte, sua implementação do método IRawElementProviderSimple::GetPropertyValue deve definir o parâmetro pRetVal como VT_EMPTY e retornar S_OK. Retornar UIA_E_NOTSUPPORTED pode fazer com que o proxy MSAA para UIA remova o mapeamento padrão para a propriedade correspondente.

Padrões de controle

Os seguintes padrões de controle de automação da interface do usuário não se sobrepõem à funcionalidade do Microsoft Ative Accessibility. Eles podem ser usados em uma implementação IAccessibleEx :

  • Doca
  • ExpandirFechar
  • Grelha
  • GridItem
  • MultipleView
  • RangeValue
  • Deslocar
  • ScrollItem
  • SynchronizedInput
  • Tabela
  • TableItem
  • Transformar

Para os padrões de controle RangeValue e Transform, alguns métodos se sobrepõem entre o padrão de controle UI Automation e os métodos Microsoft Ative Accessibility. Nestes casos, ambos devem ser implementados. Por exemplo, os métodos IAccessible::get_accValue e IAccessible::p ut_accValue do Microsoft Ative Accessibility, assim como os métodosIRangeValueProvider::Value e IRangeValueProvider::SetValue da automação da interface do usuário. Internamente, uma implementação pode compartilhar código para estes. Este requisito para implementar ambos os conjuntos evita ter uma implementação parcial de uma interface padrão, mantendo a interface IAccessible utilizável por clientes existentes do Microsoft Ative Accessibility.

Os seguintes padrões de controle de automação da interface do usuário não são necessários quando o controle tem uma das funções descritas abaixo; caso contrário, devem ser explicitamente apoiados, se for caso disso.

Padrão de controle de automação da interface do usuário Função de acessibilidade ativa da Microsoft
InvokePattern ROLE_SYSTEM_PUSHBUTTON, ROLE_SYSTEM_MENUITEM, ROLE_SYSTEM_BUTTONDROPDOWN, ROLE_SYSTEM_SPLITBUTTON e qualquer outra função em que o valor da propriedade accDefaultAction não seja NULL.
SelectionItemPattern ROLE_SYSTEM_LISTITEM, ROLE_SYSTEM_RADIOBUTTON
SelectionPattern ROLE_SYSTEM_LIST
TogglePattern ROLE_SYSTEM_CHECKBUTTON
ValuePattern ROLE_SYSTEM_TEXT (quando não é somente leitura), ROLE_SYSTEM_PROGRESSBAR, ROLE_SYSTEM_COMBOBOX e qualquer outra função quando o valor da propriedade accValue não é NULL.
WindowPattern Suportado automaticamente no nível superior Microsoft Win32 HWNDs.

 

WinEvents for UI Automation Property Changed Events

Além dos eventos definidos para IAccessible, os seguintes identificadores de evento também são definidos e podem ser usados com uma implementação IAccessibleEx como eventos de propriedade alterada para propriedades correspondentes de Automação da Interface do Usuário. Estes utilizam o mesmo mecanismo que os eventos definidos para IAccessible. Para obter mais informações, consulte WinEvents.

ID do WinEvent para implementações IAccessibleEx Id WinEvent relacionado do Microsoft Ative Accessibility
UIA_AriaPropertiesPropertyId Nenhum
UIA_AriaRolePropertyId Nenhum
UIA_ControllerForPropertyId Nenhum
UIA_DescribedByPropertyId Nenhum
UIA_ExpandCollapseExpandCollapseStatePropertyId EVENT_OBJECT_STATECHANGE
UIA_FlowsToPropertyId Nenhum
UIA_InputDiscardedEventId Nenhum
UIA_InputReachedOtherElementEventId Nenhum
UIA_InputReachedTargetEventId Nenhum
UIA_IsDataValidForFormPropertyId Nenhum
UIA_IsEnabledPropertyId EVENT_OBJECT_STATECHANGE
UIA_ItemStatusPropertyId Nenhum
UIA_MultipleViewCurrentViewPropertyId Nenhum
UIA_ScrollHorizontallyScrollablePropertyId Nenhum
UIA_ScrollHorizontalScrollPercentPropertyId EVENT_OBJECT_CONTENTSCROLLED
UIA_ScrollHorizontalViewSizePropertyId Nenhum
UIA_ScrollVerticallyScrollablePropertyId Nenhum
UIA_ScrollVerticalScrollPercentPropertyId EVENT_OBJECT_CONTENTSCROLLED
UIA_ScrollVerticalViewSizePropertyId Nenhum
UIA_ToggleToggleStatePropertyId EVENT_OBJECT_STATECHANGE

 

Para os eventos acima que têm um valor de EVENT_OBJECT_ listado depois deles, e a implementação IAccessibleEx deve disparar esse evento além do evento alterado listado. Isso permite que o código de cliente IAccessibleEx existente continue funcionando, enquanto transmite informações de eventos mais granulares para clientes interessados.

WinEvents

A interface IAccessibleEx