共用方式為


用戶端 UI 自動化提供者實作

注意

本文件適用對象為 .NET Framework 開發人員,其想要使用 System.Windows.Automation 命名空間中定義的受控 UI 自動化類別。 如需 UI 自動化的最新資訊,請參閱 Windows 自動化 API:UI 自動化

Microsoft 作業系統內使用數個不同的使用者介面 (UI) 架構,包括 Win32、Windows Forms 和 Windows Presentation Foundation (WPF)。 Microsoft UI 自動化會公開 UI 元素相關資訊給用戶端。 不過,UI 自動化本身不會知道這些架構中存在的不同控制項類型,也不具備從這些架構中擷取資訊的必要技術。 它會將這項工作交給稱為提供者的物件。 提供者會從特定控制項擷取資訊,並將該資訊傳遞給 UI 自動化,再由其以一致的方式呈現給用戶端。

提供者可以存在於伺服器端或用戶端上。 伺服器端的提供者是由控制項本身所實作。 WPF 元素會實作提供者,任何撰寫時考慮到 UI 自動化的協力廠商控制項也可以實作提供者。

不過,舊版控制項 (例如 Win32 和 Windows Forms 中的舊版控制項) 不會直接支援 UI 自動化。 這些控制項會改由提供者服務,這些提供者存在於用戶端處理序,並使用跨處理序通訊 (例如,藉由監視控制項的往來 Windows 訊息) 來取得控制項的相關資訊。 這種用戶端提供者有時稱為 Proxy。

Windows Vista 提供標準 Win32 和 Windows Forms 控制項的提供者。 此外,針對未由另一個伺服器端提供者或 Proxy 所服務,但有 Microsoft Active Accessibility 實作的任何控制項,後援提供者也提供部分 UI 自動化支援。 所有這些提供者都會自動載入,供用戶端應用程式使用。

如需 Win32 和 Windows 控制項支援的詳細資訊,請參閱標準控制項的 UI 自動化支援

應用程式也可以註冊其他用戶端提供者。

散發用戶端提供者

UI 自動化預期在 Managed 程式碼組件中找到用戶端提供者。 這個組件中的命名空間應該和組件同名。 例如,稱為 ContosoProxies.dll 的組件會包含 ContosoProxies 命名空間。 在命名空間中,建立 UIAutomationClientSideProviders 類別。 在靜態 ClientSideProviderDescriptionTable 欄位的實作中,建立用於說明提供者的 ClientSideProviderDescription 結構陣列。

註冊及設定用戶端提供者

動態連結程式庫 (DLL) 的用戶端提供者會藉由呼叫 RegisterClientSideProviderAssembly 來載入。 用戶端應用程式不需進一步的動作,即可使用提供者。

藉由使用 RegisterClientSideProviders,註冊用戶端本身程式碼中實作的提供者。 這個方法會採用 ClientSideProviderDescription 結構陣列做為引數,每個結構會指定下列屬性:

  • 回呼函式,會建立提供者物件。

  • 提供者將服務之控制項的類別名稱。

  • 提供者將服務之應用程式的映像名稱 (通常是可執行檔的完整名稱)。

  • 管理類別名稱與目標應用程式中找到之視窗類別比對方式的旗標。

最後兩個參數為選擇性的。 當用戶端要針對不同應用程式使用不同提供者時,它可以指定目標應用程式的映像名稱。 例如,在支援多個檢視模式的已知應用程式中,用戶端可以針對 Win32 清單檢視控制項使用一個提供者,而在另一個不支援多個檢視模式的已知應用程式中,則針對類似控制項使用另一個提供者。

另請參閱