摘要Active Accessibility推出的目标是方便身患残疾的人士使用电脑——可 用于放大器、屏幕阅读器,以及触觉型鼠标。它还可用来开发驱动其它软件的应用程序,最 后,其模拟用户输入的能力尤其适合测试软件的开发。
本文从Active Accessibility 的 基本概念出发,带你领略一个测试应用程序软件的开发过程。你将会看到这个测试程序是如 何与常用的控件以及其它UI元素交互,并处理随后的WinEvents的。
Microsoft Active Accessibility是一种相对较新的技术(1.0版在1997年5月份推出),它通过提 供一种从任意UI元素提取信息的有效的方法,实现了对UI元素的程序式访问。有了这种功能 ,程序员就能获得有关UI元素的信息从而与之完成交互。例如,你可以从程序里按下一个按 钮,从一个列表中选择一项,或者拉下一个组合框。最初,这种技术是为了方便缺陷人群使 用软件(例如视力很差的人),而实际上它得到了更为广泛的应用,例如放大器,屏幕阅读 器,以及触觉型鼠标。
Active Accessibility可以运行于Windows98和 Windows2000。为了在Windows95(英文版)和windows NT4.0(Service Pack 6及其以上)下使用,你可以安装Active Accessibility RDK和SDK,它们可以从下面的 站点下载:http://msdn.microsoft.com/isapi/gomscom.asp?TARGET=/enable/msaa/.
有关Active Accessibility的其它信息,也可以在此站点找到。
Active Accessibility的实质使得它非常适用于设计驱动其它软件产品的程序。一类能够很好的利用 Active Accessibility的程序是测试程序。另一类可能是执行一系列用户定义的响应UI元素 状态确认的键盘和鼠标输入的程序——例如,一个使得Windows Media播 放器自动响应“Windows Media Player Error”消息,从而不间断的尝试连接到 一个繁忙的服务器的程序,这种自动响应包括关闭这个对话框,单击适当的菜单而继续中断 的连接过程。
有两种Active Accessibility有关的程序:兼容Active Accessibility 的程序,操纵它们的工具。本文研究后一类型:开发Active Accessibility工具去控制其它 软件产品。作为重点,我将集中讨论测试程序的开发。这些不仅是有用的,而且它们展示了 Active Accessibility的几乎所有特性。
Active Accessibility基础
Active Accessibility的主要思想是提供以编制程序方式访问UI元素以得到这些元素信息的功能。称 支持这种功能的UI元素是可访问的。在大多数情况下,这意味着一个UI元素支持Iaccessible 接口。你也可以说在Active Accessibility的世界里,一个可访问的UI元素可表示为 Iaccessible接口。
每当你需要有关一个元素的信息,在其上执行一个动作,或者使 用Active Accessibility做其它的什么,你只需要通过使用代表这个元素的Iaccessible接口 的一种方法或者属性来引用这个元素。后面,我将说明一个Iaccessible接口/子 ID对如何表 示一个UI元素。现在,我们暂时集中讨论Iaccessible接口。
有几种方法取得代表一 个可访问UI元素的Iaccessible接口的指针。最普通的方法是使用Active Accessibility提供 的一种函数,例如AccessibleObjectFromPoint, AccessibleObjectFromWindow等等,或者 使用Iaccessible支持的方法,例如get_accChild,get_accParent。这些功能和方法将在后 面详细描述。
Iaccessible接口支持允许你得到各UI元素信息的属性,而其中对于测 试软件最重要的属性是名字、角色和状态。它们大多数将通过例子加以描述。让我们来看一 下Windows NT 4.0 Windows Explorer Find:所有的文件对话框显示在图1中,包括一个标示 为“Look in:”的组合列表框,它的名字是Look in:,角色是combobox,状态是 可见。UI元素的状态反映了元素的当前状态。
Figure 1 The IAccessible Example