Information technology — Interoperability with assistive technology (AT) — Part 2: Windows accessibility application programming interface (API)

ISO/IEC TR 13066-2:2016 specifies services provided in the Microsoft Windows platform to enable assistive technologies (AT) to interact with other software. One goal of this part of ISO/IEC 13066 is to define a set of application programming interfaces (APIs) for allowing software applications to enable accessible technologies on the Microsoft Windows platform. Another goal of this part of ISO/IEC 13066 is to facilitate extensibility and interoperability by enabling implementations by multiple vendors on multiple platforms. ISO/IEC TR 13066-2:2016 is applicable to the broad range of ergonomics and how ergonomics apply to human interaction with software systems.

Technologies de l'information — Interopérabilité avec les technologies d'assistance — Partie 2: Interface de programmation d'applications (API) d'accessibilité Windows

General Information

Status
Published
Publication Date
25-Jan-2016
Current Stage
6060 - International Standard published
Due Date
08-Jul-2017
Completion Date
26-Jan-2016
Ref Project

Relations

Buy Standard

Technical report
ISO/IEC TR 13066-2:2016 - Information technology -- Interoperability with assistive technology (AT)
English language
88 pages
sale 15% off
Preview
sale 15% off
Preview
Technical report
ISO/IEC TR 13066-2:2016 - Information technology -- Interoperability with assistive technology (AT)
English language
88 pages
sale 15% off
Preview
sale 15% off
Preview

Standards Content (Sample)

TECHNICAL ISO/IEC TR
REPORT 13066-2
Second edition
2016-02-01
Information technology —
Interoperability with assistive
technology (AT) —
Part 2:
Windows accessibility application
programming interface (API)
Technologies de l’information — Interopérabilité avec les
technologies d’assistance —
Partie 2: Interface de programmation d’applications (API)
d’accessibilité Windows
Reference number
ISO/IEC TR 13066-2:2016(E)
©
ISO/IEC 2016

---------------------- Page: 1 ----------------------
ISO/IEC TR 13066-2:2016(E)

COPYRIGHT PROTECTED DOCUMENT
© ISO/IEC 2016, Published in Switzerland
All rights reserved. Unless otherwise specified, no part of this publication may be reproduced or utilized otherwise in any form
or by any means, electronic or mechanical, including photocopying, or posting on the internet or an intranet, without prior
written permission. Permission can be requested from either ISO at the address below or ISO’s member body in the country of
the requester.
ISO copyright office
Ch. de Blandonnet 8 • CP 401
CH-1214 Vernier, Geneva, Switzerland
Tel. +41 22 749 01 11
Fax +41 22 749 09 47
copyright@iso.org
www.iso.org
ii © ISO/IEC 2016 – All rights reserved

---------------------- Page: 2 ----------------------
ISO/IEC TR 13066-2:2016(E)

Contents Page
Foreword .v
Introduction .vi
1 Scope . 1
2 Terms and definitions . 1
3 General description and architecture of the Microsoft Windows Automation API .7
3.1 General description . 7
3.1.1 Microsoft Active Accessibility overview . 7
3.1.2 UI Automation overview . 8
3.1.3 IAccessibleEx interface . 9
3.2 Architecture .10
4 Using the API .12
4.1 Using the Microsoft Active Accessibility API .12
4.1.1 Types of Microsoft Active Accessibility support .13
4.1.2 Retrieving an accessible object .13
4.1.3 The WM_GETOBJECT message .13
4.1.4 Special values of Object Identifier . .14
4.2 Using the UI Automation API .15
4.2.1 UI Automation model .15
4.2.2 UI Automation tree .16
4.2.3 UI Automation control patterns, control types, properties, and events.16
4.3 Using the IAccessibleEx interface .21
4.3.1 The IAccessibleEx interface implementation .21
5 Exposing User Interface Element Information .24
5.1 General .24
5.2 Exposing UI Elements with Microsoft Active Accessibility .25
5.2.1 How an MSAA Server exposes relevant properties .25
5.2.2 Provide support for the Accessible Object structure .26
5.2.3 Support hit testing .27
5.2.4 Generate appropriate WinEvents .27
5.2.5 Object identifier .27
5.2.6 How MSAA clients access exposed UI elements .28
5.3 Exposing UI Elements with UI Automation .28
5.3.1 Types of providers .28
5.3.2 UI Automation provider concepts .28
5.3.3 Provider interfaces .29
5.3.4 Property values .30
5.3.5 Provider navigation .30
5.3.6 Provider reparenting . .31
5.3.7 Provider repositioning . .31
5.3.8 How UI Automation clients access exposed UI Elements .32
6 Exposing UI Element actions .33
6.1 Exposing UI Element actions in MSAA .33
6.2 Exposing UI Element actions in UI Automation .33
6.2.1 UI Automation control pattern components.33
6.2.2 Control patterns in providers and clients .34
6.2.3 Dynamic control patterns .34
6.2.4 Control patterns and related interfaces .34
7 Keyboard focus .36
7.1 MSAA keyboard focus and selection .36
7.1.1 Focus and selection properties and methods .36
7.1.2 Events triggered in menus .37
7.2 UI Automation keyboard focus and selection .37
© ISO/IEC 2016 – All rights reserved iii

---------------------- Page: 3 ----------------------
ISO/IEC TR 13066-2:2016(E)

7.2.1 Focus . .37
7.2.2 Selection .38
8 Events .44
8.1 WinEvents .44
8.1.1 USER’s role in WinEvents .44
8.1.2 Receiving event notifications .45
8.1.3 Sending events .45
8.1.4 The allocation of WinEvent IDs .45
8.2 UI Automation events .46
8.2.1 How providers raise events .47
8.2.2 How clients register for and process events .48
9 Programmatic modifications of states, properties, values, and text .48
9.1 UI Automation specifications .48
9.1.1 Introduction .48
9.1.2 UI Automation elements .49
9.1.3 UI Automation tree .49
9.1.4 UI Automation properties .50
9.1.5 UI Automation control patterns .50
9.1.6 UI Automation control types .50
9.1.7 UI Automation events .50
10 Design considerations .51
10.1 UI Automation design considerations .51
10.1.1 UI Automation clients .51
10.1.2 UI Automation providers .54
10.1.3 Coexistence and interoperability with Microsoft Active Accessibility .57
10.2 IAccessibleEx design considerations .58
10.2.1 Design consideration for providers before implementing the
IAccessibleEx interface .58
10.2.2 IAccessibleEx interface for providers .58
10.2.3 IAccessibleEx interface for clients .59
11 Further Information .63
11.1 Microsoft Active Accessibility and Extensibility .63
11.2 UI Automation extensibility features .63
11.2.1 Registration of custom UI Automation properties, events, and control patterns .63
11.2.2 How clients and providers support custom control patterns .64
Annex A (informative) Microsoft Active Accessibility to Automation Proxy .65
Annex B (informative) UI Automation to Microsoft Active Accessibility Bridge .72
Annex C (informative) UI Automation for W3C Accessible Rich Internet Applications
(ARIA) Specification .77
Annex D (informative) Other Useful APIs for Development and Support of
Assistive Technologies .81
Bibliography .88
iv © ISO/IEC 2016 – All rights reserved

---------------------- Page: 4 ----------------------
ISO/IEC TR 13066-2:2016(E)

Foreword
ISO (the International Organization for Standardization) and IEC (the International Electrotechnical
Commission) form the specialized system for worldwide standardization. National bodies that are
members of ISO or IEC participate in the development of International Standards through technical
committees established by the respective organization to deal with particular fields of technical
activity. ISO and IEC technical committees collaborate in fields of mutual interest. Other international
organizations, governmental and non-governmental, in liaison with ISO and IEC, also take part in the
work. In the field of information technology, ISO and IEC have established a joint technical committee,
ISO/IEC JTC 1.
The procedures used to develop this document and those intended for its further maintenance are
described in the ISO/IEC Directives, Part 1. In particular the different approval criteria needed for
the different types of document should be noted. This document was drafted in accordance with the
editorial rules of the ISO/IEC Directives, Part 2 (see www.iso.org/directives).
Attention is drawn to the possibility that some of the elements of this document may be the subject
of patent rights. ISO and IEC shall not be held responsible for identifying any or all such patent
rights. Details of any patent rights identified during the development of the document will be in the
Introduction and/or on the ISO list of patent declarations received (see www.iso.org/patents).
Any trade name used in this document is information given for the convenience of users and does not
constitute an endorsement.
For an explanation on the meaning of ISO specific terms and expressions related to conformity
assessment, as well as information about ISO’s adherence to the WTO principles in the Technical
Barriers to Trade (TBT), see the following URL: Foreword — Supplementary information.
The committee responsible for this document is ISO/IEC JTC 1, Information technology, Subcommittee
SC 35, User interfaces.
This second edition cancels and replaces the first edition (ISO/IEC/TR 13066–2:2012), which has been
technically revised.
ISO/IEC/TR 13066 consists of the following parts, under the general title Information technology —
Interoperability with assistive technology (AT):
— Part 1: Requirements and recommendations for interoperability
— Part 2: Windows accessibility application programming interface (API)
— Part 3: IAccessible2 accessibility application programming interface (API)
— Part 4: Linux/UNIX graphical environments accessibility API
— Part 6: Java accessibility application programming interface (API)
© ISO/IEC 2016 – All rights reserved v

---------------------- Page: 5 ----------------------
ISO/IEC TR 13066-2:2016(E)

Introduction
Individuals with a wide range of functional disabilities, impairments, and difficulties require specific
technology to enable computers and software to be accessible to them. This part of ISO/IEC 13066
provides information about the Microsoft® Windows® Automation Frameworks, including Microsoft
Active Accessibility, User Interface (UI) Automation, and the common interfaces of these accessibility
frameworks including the IAccessibleEx interface specification.
The intent of this part of ISO/IEC 13066 is to provide information and application programming
interfaces (APIs) needed to use these frameworks. A primary goal of this part of ISO/IEC 13066 is to
ensure that accessible software applications can be written in such a way that they are fully compatible
with the Microsoft Accessibility APIs available on the Microsoft Windows operating system.
vi © ISO/IEC 2016 – All rights reserved

---------------------- Page: 6 ----------------------
TECHNICAL REPORT ISO/IEC TR 13066-2:2016(E)
Information technology — Interoperability with assistive
technology (AT) —
Part 2:
Windows accessibility application programming
interface (API)
1 Scope
This part of ISO/IEC 13066 specifies services provided in the Microsoft Windows platform to enable
assistive technologies (AT) to interact with other software. One goal of this part of ISO/IEC 13066 is to
define a set of application programming interfaces (APIs) for allowing software applications to enable
accessible technologies on the Microsoft Windows platform. Another goal of this part of ISO/IEC 13066
is to facilitate extensibility and interoperability by enabling implementations by multiple vendors on
multiple platforms.
This part of ISO/IEC 13066 is applicable to the broad range of ergonomics and how ergonomics apply to
human interaction with software systems.
2 Terms and definitions
For the purposes of this document, the following terms and definitions apply.
2.1
application programming interface
API
standard set of documented and supported routines that expose operating system programming
interfaces and services to applications
Note 1 to entry: An API is usually a source code interface that an operating system, library, or service provides to
support requests made by computer programs.
EXAMPLE Examples of operating system services that are exposed by APIs include administration and
management, diagnostics, graphics and multimedia, networking, security, system services, user interfaces, and
accessibility.
2.2
accessibility
degree to which a computer system is easy to use by all people, including those with disabilities
2.3
accessible object
part of user interface object that is accessible by Microsoft Active Accessibility
Note 1 to entry: An accessible object is represented by an IAccessible interface and a ChildId identifier
2.4
Accessible Rich Internet Applications
ARIA
accessibility framework from W3C that exposes web content to assistive technologies such as screen
readers and speech commanding programs
© ISO/IEC 2016 – All rights reserved 1

---------------------- Page: 7 ----------------------
ISO/IEC TR 13066-2:2016(E)

2.5
Assistive Technology
AT
technology designed to provide accessibility support to individuals with physical or cognitive
impairments or disabilities
Note 1 to entry: Assistive Technology can be manifested through both hardware and software.
2.6
Accessibility Toolkit
Linux Accessibility Toolkit
ATK
programming support accessibility features in their applications
2.7
automation
replacement of manual operations by computerized methods
Note 1 to entry: With respect to this part of ISO/IEC 13066, automation is a way to manipulate an application’s
user interface from outside the application.
2.8
automation element
object or element that is accessible by the UI Automation object model
Note 1 to entry: Similar to accessible objects in Microsoft Active Accessibility, an automation element in UI
Automation represents a piece or a part of the user interface, such as button, window, or desktop.
2.9
Audio Video Interleaved
AVI
format that enables both audio and video data in a file container
2.10
C#
programming language designed for building applications that run on the .NET Framework
Note 1 to entry: C#, which is an evolution of C and C++, is type safe and object-oriented.
Note 2 to entry: Because it is compiled as managed code, it benefits from the services of the common language
runtime, such as language interoperability, security, and garbage collection.
2.11
callback function
function or procedure that third party or client code supplies to a component, often by passing a
function pointer through the component’s API
Note 1 to entry: The component may then call this code at specific times. This technique is often used by
components to signal client code that some event has taken place, or to request client code to perform some
specific task.
2.12
clients
component that uses the services of another component
Note 1 to entry: In this part of ISO/IEC 13066, client refers more specifically to a component that uses the services
of Microsoft Active Accessibility or UI Automation, or both, to access, identify, or manipulate the user interface
(UI) elements of an application
2 © ISO/IEC 2016 – All rights reserved

---------------------- Page: 8 ----------------------
ISO/IEC TR 13066-2:2016(E)

2.13
Common Language Runtime
CLR
Microsoft’s commercial implementation of the Common Language Infrastructure (CLI) specification
Note 1 to entry: The CLI provides a specification for executable code and the execution environment in which it runs
Note 2 to entry: At the centre of the CLI are a unified type system, a virtual execution system, and a specification
for multiple programming languages to share the type system and compile into a common intermediate language.
2.14
Component Object Model
COM
object-oriented programming model that defines how objects interact within a single process or
between processes
Note 1 to entry: In COM, clients have access to an object through interfaces implemented on the object.
2.15
content view
subset of the control view of the UI Automation tree
Note 1 to entry: The content view contains UI items that convey the actual information in a user interface,
including UI items that can receive keyboard focus and some text that is not a label on a UI item.
2.16
control pattern
design implementation that describes a discrete piece of functionality for a control
Note 1 to entry: This functionality can include the visual appearance of a control and the actions it can perform.
2.17
control view
subset of the raw view of the UI Automation tree
Note 1 to entry: The control view includes the UI items that provide information to the user or enable the user to
perform an action.
2.18
enumerator
object that iterates through its associated collection
Note 1 to entry: An enumerator can be thought of as a movable pointer to any element in the collection.
2.19
Global Unique Identifier
GUID
unique reference number used as an identifier in computer software
2.20
HWND
unique long integer value that is assigned by Microsoft Windows to the current window, where a
window is a primitive of Windows’ UI management
2.21
in-process
Microsoft Accessibility code that is executed in a target application’s process
© ISO/IEC 2016 – All rights reserved 3

---------------------- Page: 9 ----------------------
ISO/IEC TR 13066-2:2016(E)

2.22
Java Accessibility Application Programming Interface
JAAPI
accessibility framework for the Java™ SE platform that exposes Java applications to assistive
technologies such as screen readers and speech commanding programs
2.23
Java Development Kit
JDK
collection of programming tools
2.24
Java Virtual Machine
JVM
environment in which Java bytecode can be executed
2.25
managed API
API that, when compiled and run, is under the control of an intermediary runtime infrastructure, like a
virtual machine
EXAMPLE Microsoft’s Common Language Runtime (CLR) and the Java Virtual Machine (JVM) are examples
of runtime infrastructures.
Note 1 to entry: Managed code is compiled into an intermediate language construct (for example, byte code)
and the runtime infrastructure handles the compilation into machine code. The runtime infrastructure handles
programming constructs like memory management.
2.26
Microsoft Active Accessibility
COM-based technology that improves the way accessibility aids work with applications running on
Microsoft Windows
Note 1 to entry: Microsoft Active Accessibility provides dynamic-link libraries (DLLs) that are incorporated into
the operating system, as well as a COM interface and application programming elements that provide reliable
methods for exposing information about user interface elements.
2.27
MSDN
the Microsoft Developer Network, which is a technical information resource for developers who are
using Microsoft technologies
2.28
Multiple Document Interface
MDI
A document interface that allows a window to reside under a parent window
2.29
native API
API that, when compiled and run, is not under the control of an intermediary runtime infrastructure
such as a virtual machine or CLR
Note 1 to entry: Native code compiles directly to machine code, and the developer is responsible for most aspects
of programming constructs (for example, pointers, freeing memory, and so on). Also known as a native API.
2.30
out-of-process
Microsoft Accessibility code that is executed in a different process from the target
application’s process
4 © ISO/IEC 2016 – All rights reserved

---------------------- Page: 10 ----------------------
ISO/IEC TR 13066-2:2016(E)

2.31
providers
components that expose information about UI elements
EXAMPLE Such components can be applications, DLLs, and so on.
Note 1 to entry: These include any control, module, or application which implements UI Automation provider
interfaces.
2
...

TECHNICAL ISO/IEC TR
REPORT 13066-2
Second edition
Information technology —
Interoperability with assistive
technology (AT) —
Part 2:
Windows accessibility application
programming interface (API)
Technologies de l’information — Interopérabilité avec les
technologies d’assistance —
Partie 2: Interface de programmation d’applications (API)
d’accessibilité Windows
PROOF/ÉPREUVE
Reference number
ISO/IEC TR 13066-2:2015(E)
©
ISO/IEC 2015

---------------------- Page: 1 ----------------------
ISO/IEC TR 13066-2:2015(E)

COPYRIGHT PROTECTED DOCUMENT
© ISO/IEC 2015, Published in Switzerland
All rights reserved. Unless otherwise specified, no part of this publication may be reproduced or utilized otherwise in any form
or by any means, electronic or mechanical, including photocopying, or posting on the internet or an intranet, without prior
written permission. Permission can be requested from either ISO at the address below or ISO’s member body in the country of
the requester.
ISO copyright office
Ch. de Blandonnet 8 • CP 401
CH-1214 Vernier, Geneva, Switzerland
Tel. +41 22 749 01 11
Fax +41 22 749 09 47
copyright@iso.org
www.iso.org
ii © ISO/IEC 2015 – All rights reserved

---------------------- Page: 2 ----------------------
ISO/IEC TR 13066-2:2015(E)

Contents Page
Foreword .v
Introduction .vi
1 Scope . 1
2 Terms and definitions . 1
3 General description and architecture of the Microsoft Windows Automation API .7
3.1 General description . 7
3.1.1 Microsoft Active Accessibility overview . 7
3.1.2 UI Automation overview . 8
3.1.3 IAccessibleEx interface . 9
3.2 Architecture .10
4 Using the API .12
4.1 Using the Microsoft Active Accessibility API .12
4.1.1 Types of Microsoft Active Accessibility support .13
4.1.2 Retrieving an accessible object .13
4.1.3 The WM_GETOBJECT message .13
4.1.4 Special values of Object Identifier . .14
4.2 Using the UI Automation API .15
4.2.1 UI Automation model .15
4.2.2 UI Automation tree .16
4.2.3 UI Automation control patterns, control types, properties, and events.16
4.3 Using the IAccessibleEx interface .21
4.3.1 The IAccessibleEx interface implementation .21
5 Exposing User Interface Element Information .24
5.1 General .24
5.2 Exposing UI Elements with Microsoft Active Accessibility .25
5.2.1 How an MSAA Server exposes relevant properties .25
5.2.2 Provide support for the Accessible Object structure .26
5.2.3 Support hit testing .27
5.2.4 Generate appropriate WinEvents .27
5.2.5 Object identifier .27
5.2.6 How MSAA clients access exposed UI elements .28
5.3 Exposing UI Elements with UI Automation .28
5.3.1 Types of providers .28
5.3.2 UI Automation provider concepts .28
5.3.3 Provider interfaces .29
5.3.4 Property values .30
5.3.5 Provider navigation .30
5.3.6 Provider reparenting . .31
5.3.7 Provider repositioning . .31
5.3.8 How UI Automation clients access exposed UI Elements .32
6 Exposing UI Element actions .33
6.1 Exposing UI Element actions in MSAA .33
6.2 Exposing UI Element actions in UI Automation .33
6.2.1 UI Automation control pattern components.33
6.2.2 Control patterns in providers and clients .34
6.2.3 Dynamic control patterns .34
6.2.4 Control patterns and related interfaces .34
7 Keyboard focus .36
7.1 MSAA keyboard focus and selection .36
7.1.1 Focus and selection properties and methods .36
7.1.2 Events triggered in menus .37
7.2 UI Automation keyboard focus and selection .37
© ISO/IEC 2015 – All rights reserved PROOF/ÉPREUVE iii

---------------------- Page: 3 ----------------------
ISO/IEC TR 13066-2:2015(E)

7.2.1 Focus . .37
7.2.2 Selection .38
8 Events .44
8.1 WinEvents .44
8.1.1 USER’s role in WinEvents .44
8.1.2 Receiving event notifications .45
8.1.3 Sending events .45
8.1.4 The allocation of WinEvent IDs .45
8.2 UI Automation events .46
8.2.1 How providers raise events .47
8.2.2 How clients register for and process events .48
9 Programmatic modifications of states, properties, values, and text .48
9.1 UI Automation specifications .48
9.1.1 Introduction .48
9.1.2 UI Automation elements .49
9.1.3 UI Automation tree .49
9.1.4 UI Automation properties .50
9.1.5 UI Automation control patterns .50
9.1.6 UI Automation control types .50
9.1.7 UI Automation events .50
10 Design considerations .51
10.1 UI Automation design considerations .51
10.1.1 UI Automation clients .51
10.1.2 UI Automation providers .54
10.1.3 Coexistence and interoperability with Microsoft Active Accessibility .57
10.2 IAccessibleEx design considerations .58
10.2.1 Design consideration for providers before implementing the
IAccessibleEx interface .58
10.2.2 IAccessibleEx interface for providers .58
10.2.3 IAccessibleEx interface for clients .59
11 Further Information .63
11.1 Microsoft Active Accessibility and Extensibility .63
11.2 UI Automation extensibility features .63
11.2.1 Registration of custom UI Automation properties, events, and control patterns .63
11.2.2 How clients and providers support custom control patterns .64
Annex A (informative) Microsoft Active Accessibility to Automation Proxy .65
Annex B (informative) UI Automation to Microsoft Active Accessibility Bridge .72
Annex C (informative) UI Automation for W3C Accessible Rich Internet Applications
(ARIA) Specification .77
Annex D (informative) Other Useful APIs for Development and Support of
Assistive Technologies .81
Bibliography .88
iv PROOF/ÉPREUVE © ISO/IEC 2015 – All rights reserved

---------------------- Page: 4 ----------------------
ISO/IEC TR 13066-2:2015(E)

Foreword
ISO (the International Organization for Standardization) and IEC (the International Electrotechnical
Commission) form the specialized system for worldwide standardization. National bodies that are
members of ISO or IEC participate in the development of International Standards through technical
committees established by the respective organization to deal with particular fields of technical
activity. ISO and IEC technical committees collaborate in fields of mutual interest. Other international
organizations, governmental and non-governmental, in liaison with ISO and IEC, also take part in the
work. In the field of information technology, ISO and IEC have established a joint technical committee,
ISO/IEC JTC 1.
The procedures used to develop this document and those intended for its further maintenance are
described in the ISO/IEC Directives, Part 1. In particular the different approval criteria needed for
the different types of document should be noted. This document was drafted in accordance with the
editorial rules of the ISO/IEC Directives, Part 2 (see www.iso.org/directives).
Attention is drawn to the possibility that some of the elements of this document may be the subject
of patent rights. ISO and IEC shall not be held responsible for identifying any or all such patent
rights. Details of any patent rights identified during the development of the document will be in the
Introduction and/or on the ISO list of patent declarations received (see www.iso.org/patents).
Any trade name used in this document is information given for the convenience of users and does not
constitute an endorsement.
For an explanation on the meaning of ISO specific terms and expressions related to conformity
assessment, as well as information about ISO’s adherence to the WTO principles in the Technical
Barriers to Trade (TBT), see the following URL: Foreword — Supplementary information.
The committee responsible for this document is ISO/IEC JTC 1, Information technology, Subcommittee
SC 35, User interfaces.
This second edition cancels and replaces the first edition (ISO/IEC/TR 13066–2:2012), which has been
technically revised.
ISO/IEC/TR 13066 consists of the following parts, under the general title Information technology —
Interoperability with assistive technology (AT):
— Part 1: Requirements and recommendations for interoperability
— Part 2: Windows accessibility application programming interface (API)
— Part 3: IAccessible2 accessibility application programming interface (API)
— Part 4: Linux/UNIX graphical environments accessibility API
— Part 6: Java accessibility application programming interface (API)
© ISO/IEC 2015 – All rights reserved PROOF/ÉPREUVE v

---------------------- Page: 5 ----------------------
ISO/IEC TR 13066-2:2015(E)

Introduction
Individuals with a wide range of functional disabilities, impairments, and difficulties require specific
technology to enable computers and software to be accessible to them. This part of ISO/IEC 13066
provides information about the Microsoft® Windows® Automation Frameworks, including Microsoft
Active Accessibility, User Interface (UI) Automation, and the common interfaces of these accessibility
frameworks including the IAccessibleEx interface specification.
The intent of this part of ISO/IEC 13066 is to provide information and application programming
interfaces (APIs) needed to use these frameworks. A primary goal of this part of ISO/IEC 13066 is to
ensure that accessible software applications can be written in such a way that they are fully compatible
with the Microsoft Accessibility APIs available on the Microsoft Windows operating system.
vi PROOF/ÉPREUVE © ISO/IEC 2015 – All rights reserved

---------------------- Page: 6 ----------------------
TECHNICAL REPORT ISO/IEC TR 13066-2:2015(E)
Information technology — Interoperability with assistive
technology (AT) —
Part 2:
Windows accessibility application programming
interface (API)
1 Scope
This part of ISO/IEC 13066 specifies services provided in the Microsoft Windows platform to enable
assistive technologies (AT) to interact with other software. One goal of this part of ISO/IEC 13066 is to
define a set of application programming interfaces (APIs) for allowing software applications to enable
accessible technologies on the Microsoft Windows platform. Another goal of this part of ISO/IEC 13066
is to facilitate extensibility and interoperability by enabling implementations by multiple vendors on
multiple platforms.
This part of ISO/IEC 13066 is applicable to the broad range of ergonomics and how ergonomics apply to
human interaction with software systems.
2 Terms and definitions
For the purposes of this document, the following terms and definitions apply.
2.1
application programming interface
API
standard set of documented and supported routines that expose operating system programming
interfaces and services to applications
Note 1 to entry: An API is usually a source code interface that an operating system, library, or service provides to
support requests made by computer programs.
EXAMPLE Examples of operating system services that are exposed by APIs include administration and
management, diagnostics, graphics and multimedia, networking, security, system services, user interfaces, and
accessibility.
2.2
accessibility
degree to which a computer system is easy to use by all people, including those with disabilities
2.3
accessible object
part of user interface object that is accessible by Microsoft Active Accessibility
Note 1 to entry: An accessible object is represented by an IAccessible interface and a ChildId identifier
2.4
Accessible Rich Internet Applications
ARIA
accessibility framework from W3C that exposes web content to assistive technologies such as screen
readers and speech commanding programs
© ISO/IEC 2015 – All rights reserved PROOF/ÉPREUVE 1

---------------------- Page: 7 ----------------------
ISO/IEC TR 13066-2:2015(E)

2.5
Assistive Technology
AT
technology designed to provide accessibility support to individuals with physical or cognitive
impairments or disabilities
Note 1 to entry: Assistive Technology can be manifested through both hardware and software.
2.6
Accessibility Toolkit
Linux Accessibility Toolkit
ATK
programming support accessibility features in their applications
2.7
automation
replacement of manual operations by computerized methods
Note 1 to entry: With respect to this part of ISO/IEC 13066, automation is a way to manipulate an application’s
user interface from outside the application.
2.8
automation element
object or element that is accessible by the UI Automation object model
Note 1 to entry: Similar to accessible objects in Microsoft Active Accessibility, an automation element in UI
Automation represents a piece or a part of the user interface, such as button, window, or desktop.
2.9
Audio Video Interleaved
AVI
format that enables both audio and video data in a file container
2.10
C#
programming language designed for building applications that run on the .NET Framework
Note 1 to entry: C#, which is an evolution of C and C++, is type safe and object-oriented.
Note 2 to entry: Because it is compiled as managed code, it benefits from the services of the common language
runtime, such as language interoperability, security, and garbage collection.
2.11
callback function
function or procedure that third party or client code supplies to a component, often by passing a
function pointer through the component’s API
Note 1 to entry: The component may then call this code at specific times. This technique is often used by
components to signal client code that some event has taken place, or to request client code to perform some
specific task.
2.12
clients
component that uses the services of another component
Note 1 to entry: In this part of ISO/IEC 13066, client refers more specifically to a component that uses the services
of Microsoft Active Accessibility or UI Automation, or both, to access, identify, or manipulate the user interface
(UI) elements of an application
2 PROOF/ÉPREUVE © ISO/IEC 2015 – All rights reserved

---------------------- Page: 8 ----------------------
ISO/IEC TR 13066-2:2015(E)

2.13
Common Language Runtime
CLR
Microsoft’s commercial implementation of the Common Language Infrastructure (CLI) specification
Note 1 to entry: The CLI provides a specification for executable code and the execution environment in which it runs
Note 2 to entry: At the centre of the CLI are a unified type system, a virtual execution system, and a specification
for multiple programming languages to share the type system and compile into a common intermediate language.
2.14
Component Object Model
COM
object-oriented programming model that defines how objects interact within a single process or
between processes
Note 1 to entry: In COM, clients have access to an object through interfaces implemented on the object.
2.15
content view
subset of the control view of the UI Automation tree
Note 1 to entry: The content view contains UI items that convey the actual information in a user interface,
including UI items that can receive keyboard focus and some text that is not a label on a UI item.
2.16
control pattern
design implementation that describes a discrete piece of functionality for a control
Note 1 to entry: This functionality can include the visual appearance of a control and the actions it can perform.
2.17
control view
subset of the raw view of the UI Automation tree
Note 1 to entry: The control view includes the UI items that provide information to the user or enable the user to
perform an action.
2.18
enumerator
object that iterates through its associated collection
Note 1 to entry: An enumerator can be thought of as a movable pointer to any element in the collection.
2.19
Global Unique Identifier
GUID
unique reference number used as an identifier in computer software
2.20
HWND
unique long integer value that is assigned by Microsoft Windows to the current window, where a
window is a primitive of Windows’ UI management
2.21
in-process
Microsoft Accessibility code that is executed in a target application’s process
© ISO/IEC 2015 – All rights reserved PROOF/ÉPREUVE 3

---------------------- Page: 9 ----------------------
ISO/IEC TR 13066-2:2015(E)

2.22
Java Accessibility Application Programming Interface
JAAPI
accessibility framework for the Java™ SE platform that exposes Java applications to assistive
technologies such as screen readers and speech commanding programs
2.23
Java Development Kit
JDK
collection of programming tools
2.24
Java Virtual Machine
JVM
environment in which Java bytecode can be executed
2.25
managed API
API that, when compiled and run, is under the control of an intermediary runtime infrastructure, like a
virtual machine
EXAMPLE Microsoft’s Common Language Runtime (CLR) and the Java Virtual Machine (JVM) are examples
of runtime infrastructures.
Note 1 to entry: Managed code is compiled into an intermediate language construct (for example, byte code)
and the runtime infrastructure handles the compilation into machine code. The runtime infrastructure handles
programming constructs like memory management.
2.26
Microsoft Active Accessibility
COM-based technology that improves the way accessibility aids work with applications running on
Microsoft Windows
Note 1 to entry: Microsoft Active Accessibility provides dynamic-link libraries (DLLs) that are incorporated into
the operating system, as well as a COM interface and application programming elements that provide reliable
methods for exposing information about user interface elements.
2.27
MSDN
the Microsoft Developer Network, which is a technical information resource for developers who are
using Microsoft technologies
2.28
Multiple Document Interface
MDI
A document interface that allows a window to reside under a parent window
2.29
native API
API that, when compiled and run, is not under the control of an intermediary runtime infrastructure
such as a virtual machine or CLR
Note 1 to entry: Native code compiles directly to machine code, and the developer is responsible for most aspects
of programming constructs (for example, pointers, freeing memory, and so on). Also known as a native API.
2.30
out-of-process
Microsoft Accessibility code that is executed in a different process from the target
application’s process
4 PROOF/ÉPREUVE © ISO/IEC 2015 – All rights reserved

---------------------- Page: 10 ----------------------
ISO/IEC TR 13066-2:2015(E)

2.31
providers
components that expose information about UI elements
EXAMPLE Such components can be applications, DLLs, and so on.
Note 1 to entr
...

Questions, Comments and Discussion

Ask us and Technical Secretary will try to provide an answer. You can facilitate discussion about the standard in here.