基礎
Microsoft©Active Accessibility 是一種相對較新的技術(1.0版在1997年5月份推出)。目的是方便身患殘疾的人士使用電腦——可用于放大器、屏幕閱讀器,以及觸覺型鼠標。同樣還可以用來開發驅動其它軟件的應用程序,其D庥沒淙氳哪芰τ繞涫屎?a href="javascript:;" onClick="javascript:tagshow(event, '%B2%E2%CA%D4');" target="_self">測試軟件的開發?BR>Active Accessibility 的主要思想是提供一種以程序方式訪問UI元素信息或操作這些UI元素的功能。支持這種功能的 UI(User Interface) 元素是可訪問的。在大多數情況下,這意味著一個UI元素支持 IAccessible 接口。你也可以說在 Active Accessibility 的世界里,一個可訪問的UI元素可表示為 IAccessible 接口。
每當你需要得到有關一個元素的信息,在其上執行一個動作,或者使用 Active Accessibility 做其它的什么,你通常需要通過使用代表這個元素的 IAccessible 接口的一種方法或者屬性來引用這個元素。
Active Accessibility 原理
Active Accessibility? 的核心功能由 OLEACC.DLL 提供的。每次當你調用一個函數來返回一個 IAccessible 接口指針,其與一個UI元素相對應,OLEACC.DLL就檢查此元素是否內在支持 IAccessible。內在的支持意思是該元素的 IAccessible 是用程序實現的。
當一個UI元素不能內在的支持 IAccessible 時,OLEACC.DLL 檢查該元素的Windows 類名。如果該類是一個 USER 或者 COMCTL32 支持的類,OLEACC.DLL 就創建一個代理為 UI 元素實現 IAccessible 接口。大多數--但不是全部--COMCTL32 控件都具有被 OLEACC.DLL 支持的 IAccessible 接口。
內在支持 IAccessible 的 UI 元素的例子是定制控件,owner-drawn 和無窗口的控件。因為開發者創建的程序包含這些UI元素,同樣就實現了這些元素的接口,他們有責任為這些方法和屬性提供正確的支持。
如果你用標準控件,這也意味著你不必重寫你的應用,這些應用自動與Active Accessibility兼容。Active Accessibility名字是基于 Win32 控件的名字給出的,角色基于控件的功能定義。
如何得到 IAccessible 接口指針
每當你需要有關一個元素的信息,在其上執行一個動作,或者使用 Active Accessibility 做其它的什么,你只需要通過使用代表這個元素的 IAccessible 接口的一種方法或者屬性來引用這個元素。
有幾種方法取得代表一個可訪問 UI 元素的 IAccessible 接口的指針。最普通的方法是使用 Active Accessibility 提供的一種函數,例如 AccessibleObjectFromPoint,AccessibleObjectFromWindow 等等,或者使用 IAccessible 支持的方法,例如 get_accChild,get_accParent。
IAccessible 接口支持允許你得到各 UI 元素信息的屬性,而其中對于例子程序最重要的屬性是名字、角色和狀態。
Active Accessibility SDK提供了一些方便的工具,其中的 Object Inspector 能顯示光標指向的UI元素的屬性。Object Inspector 顯示了Active Accessibility 的世界如何因為具有支持一個選定窗口內的 IAccessible 接口的控制而變得通用了。除了搜索有關元素的信息和通過 IAccessible 接口控制元素以外,Active Accessibility? 還有兩種對于例子程序非常有用的特性:監視UI元素發生的事件和模擬鍵盤、鼠標輸入。由可訪問的元素激發的事件稱為 WinEvents,當可訪問的元素創建或者名字、狀態、位置或者鍵盤焦點發生變化時,就激發這些事件(事件機制類似于標準的 Windows 的 hook 機制。監視事件我們將在后面介紹。)。這些事件的清單見文件 WINABLE.H。每個事件的名字以 EVENT_OBJECT 或 EVENT_SYSTEM 開始。
好,我們言歸正傳,來介紹如何得到 IAccessible 接口指針。前面已經提到過 AccessibleObjectFromWindow 這個 Active Accessibility 提供的函數,從字面上大家可以看出是通過窗口來得到對應的 IAccessible 接口指針。
文章來源于領測軟件測試網 http://www.kjueaiud.com/