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

注意

這份文件適用於想要使用 UI 自動化 命名空間中定義之 Managed System.Windows.Automation 類別的 .NET Framework 開發人員。 如需 UI 自動化的最新資訊,請參閱 Windows Automation API:UI 自動化

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

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

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

Windows Vista 提供標準 Win32 和 Windows Forms 控制項的提供者。 此外,fallback 提供者 UI 自動化 會對其他伺服器端提供者或 proxy 未提供的任何控制項提供部分支援,但 Microsoft Active Accessibility 的執行。 所有這些提供者都會自動載入,供用戶端應用程式使用。

如需 Win32 和 Windows Forms 控制項的支援詳細資訊,請參閱 消費者介面自動化支援標準控制項

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

散發用戶端提供者

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

註冊及設定用戶端提供者

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

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

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

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

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

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

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

另請參閱