MSAAMicrosoft Active Accessibility
发布网友
发布时间:2024-10-02 11:04
我来回答
共1个回答
热心网友
时间:2024-10-14 03:13
MSAA,即Microsoft Active Accessibility,是一种技术模型,类似于DCOM技术,旨在方便残疾人使用Windows程序。它允许UI程序暴露出一个接口(IAccessible),以便其他程序进行控制。盲人用户可以通过USB读屏器与电脑连接,通过读屏器获取程序信息,并通过IAccessible接口获取并传递给盲文等无障碍方式。
在测试应用时,测试程序通常会遵循以下步骤:首先,调用Windows API的AccessibleObjectFromWindow函数,传入目标UI程序的HWND,发送WM_GETOBJECT消息。接着,UI程序创建一个实现IAccessible接口的内部类,并通过LresultFromObject API将接口返回给测试程序。测试程序拿到接口后,就可以通过IAccessible的几个关键函数如get_accChild和accLocation来定位UI元素、获取元素的位置和名称,以及accSelect来实现操作,如选择Listbox中的选项。accValue允许开发者自定义控件的值,例如折线图控件可以返回折线坐标序列。
MSAA的理念类似于测试插件,它通过让UI程序主动暴露接口,使调用者能控制其行为。在实际应用中,测试人员往往会结合MSAA和Win32 API,充分利用各自的优点。比如,对于UI元素的复杂属性,如样式、选中状态等,会使用Win32 API;而对于控件树结构和自绘窗口等特殊情况,MSAA的优势得以体现,比如在Excel中,虽然只有一个HWND,但通过IAccessible接口可以创建逻辑层次关系,如多个单元格的子接口。
IAccessible的实现由开发者负责,他们可以根据需要灵活定制方法,如.NET WinForm中,微软在框架中提供了默认的IAccessible实现,处理了.NET动态维护HWND的复杂性,简化了开发者的工作。