備註
本檔適用於想要使用 System.Windows.Automation 命名空間中定義的受控UI自動化類別的 .NET Framework 開發人員。 如需 UI 自動化的最新資訊,請參閱 Windows 自動化 API:使用者介面自動化。
Microsoft作系統內使用數個不同的使用者介面 (UI) 架構,包括 Win32、Windows Forms 和 Windows Presentation Foundation (WPF)。 Microsoft使用者介面自動化會將 UI 元素的相關信息公開給用戶端。 不過,使用者介面自動化本身並不知道存在於這些架構中的不同類型的控件,以及從這些架構擷取資訊所需的技術。 相反地,它會將此工作留給稱為提供者的物件。 提供者會從特定控件擷取資訊,並將該資訊交給UI自動化,然後以一致的方式呈現給用戶端。
提供者可以存在於伺服器端或用戶端。 伺服器端提供者是由控件本身實作。 WPF 元素會實作提供者,任何考量到 UI 自動化而撰寫的第三方控制項也可以如此。
不過,Win32 和 Windows Forms 中的舊版控件並不直接支援 UI 自動化。 這些控制項是由存在於客戶端程序中的提供者提供,並使用跨進程通訊來取得控件的相關資訊;例如,透過監視 Windows 訊息來回傳遞於控件之間。 這類用戶端提供者有時稱為 Proxy。
Windows Vista 提供標準 Win32 和 Windows Forms 控件的提供者。 此外,後援提供者會為未由其他伺服器端提供者或代理服務但具有 Microsoft Active Accessibility 實作的任何控制項提供部分 UI 自動化支援。 所有這些提供者都會自動載入,並可供用戶端應用程式使用。
如需 Win32 和 Windows Forms 控件支援的詳細資訊,請參閱 標準控件的 UI 自動化支援。
應用程式也可以註冊其他用戶端提供者。
分配 Client-Side 供應者
使用者介面自動化預期會在受控代碼程序集中尋找用戶端提供者。 這個元件中的命名空間應該與元件名稱相同。 例如,稱為 ContosoProxies.dll 的元件會包含 ContosoProxies 命名空間。 在命名空間內,建立 類別 UIAutomationClientSideProviders 。 在靜態 ClientSideProviderDescriptionTable 欄位的實作中,建立描述提供者的結構陣列 ClientSideProviderDescription 。
註冊與配置 Client-Side 提供者
動態連結庫 (DLL) 中的用戶端提供者會藉由呼叫 RegisterClientSideProviderAssembly來載入。 用戶端應用程式不需要採取進一步的動作,即可使用提供者。
在客戶端自己的程式碼中實作的提供者會使用 RegisterClientSideProviders 來註冊。 這個方法會採用 結構陣列 ClientSideProviderDescription 作為自變數,其中每一個都會指定下列屬性:
建立提供者對象的回調函式。
提供者將提供服務之控件的類別名稱。
應用程式映像名稱(通常是提供者將提供之可執行檔的完整名稱)。
控制類別名稱與目標應用程式中發現的視窗類別進行比對的旗標。
最後兩個參數是選擇性的。 當用戶端想要針對不同的應用程式使用不同的提供者時,用戶端可能會指定目標應用程式的映像名稱。 例如,用戶端可能會在支援多重檢視模式的已知應用程式中,針對Win32 清單檢視控件使用一個提供者,而另一個提供者則用於另一個不支援的已知應用程式中類似的控件。