IAccessible Proxy
IAccessible Proxy 提供標準 UI 元素的預設輔助功能資訊:COMCTL 和 COMCTL32 的使用者控件、使用者功能表和通用控件。 此預設支援會透過 Oleacc.dll 所建立 IAccessible 物件公開,並提供Microsoft Active Accessibility 支援,而不需要額外的伺服器開發工作。 然後,伺服器可以使用 動態註釋 API 來修改 Oleacc.dll公開的大部分資訊,但無法完全控制。
建立 Proxy
若要判斷 UI 元素是否原生支援 IAccessible介面,Oleacc.dll 傳送 WM_GETOBJECT 訊息。 非零傳回值表示元素原生支援 Microsoft Active Accessibility,並提供自己的 IAccessible 支援。 不過,如果傳回值為零,Oleacc.dll 會提供UI元素的 Proxy物件,並嘗試代表它傳回有意義的資訊。 如需 WM_GETOBJECT的詳細資訊,請參閱 WM_GETOBJECT 運作方式。
公開哪些資訊
Oleacc.dll 會使用UI元素的Windows 類別名稱來判斷應該針對每個 IAccessible 屬性公開哪些資訊,以及如何收集該資訊。 例如,Oleacc.dll 會呼叫 GetWindowText 函式來擷取標準按鈕的 Name 属性,但呼叫這個相同的函式來擷取標準編輯控件的 Value 屬性。 實際上,Oleacc.dll 會將每個 IAccessible 方法對應至適當的 Microsoft Win32 或控件特定的訊息或函數調用。 藉由使用這個類別名稱型的特殊大小寫,它可以透過 IAccessible Proxy 傳回有意義的資訊,而不需要伺服器中的任何Microsoft Active Accessibility 支援。
使用標準 UI 元素建置的應用程式通常會獲得完整的Microsoft Active Accessibility 支援,而不需要額外的開發工作。 此規則的例外狀況是已子類別化、未儲存其本身字串的控件(沒有 HASSTRINGS 樣式),或是擁有者繪製的控件。 在這些情況下,Oleacc.dll 無法收集所需的信息,因為資訊會儲存在控件外部。 不過,在上述許多案例中,已建立的因應措施或使用動態註釋,可讓伺服器配合 Oleacc.dll所提供的 Proxy。
泛型 Proxy 物件
如果 Oleacc.dll 無法辨識 UI 專案的類別名稱,它會建立一個盡可能公開資訊的泛型 Proxy。 這最多包括物件的周框、父物件、名稱(從 WM_GETTEXT起),以及視窗階層中的任何子系。