用戶端 UI 自動化提供者實作
注意事項 |
---|
這份文件適用於想要使用 System.Windows.Automation 命名空間中定義之 Managed UI Automation 類別的 .NET Framework 開發人員。如需 UI Automation 的最新資訊,請參閱 Windows Automation API:使用者介面自動化 (英文)。 |
Microsoft 作業系統中使用數個不同的user interface (UI) 架構,包括 Win32、Windows Forms 和 Windows Presentation Foundation (WPF)。 Microsoft UI Automation會公開關於 UI 項目資訊給用戶端。 不過,UI Automation本身不會知道這些架構中存在的不同控制項型別,也不具備從這些架構中擷取資訊的必要技術。 它會將這項工作交給稱為提供者的物件。 提供者會從特定控制項擷取資訊,並將該資訊傳遞給 UI Automation,再由它以一致的方式呈現給用戶端。
提供者可以存在於伺服器端或用戶端上。 伺服器端的提供者是由控制項本身所實作。 WPF 項目會實作提供者,任何撰寫時考慮到 UI Automation的任何協力廠商控制項也可以實作提供者。
不過,較舊的控制項,例如 Win32 和 Windows Forms 中的控制項,並不會直接支援 UI Automation。 存在於用戶端處理序並使用跨處理序通訊 (例如,藉由監視控制項的往來視窗訊息) 來取得控制項相關資訊的提供者會服務這些控制項。 這種用戶端提供者有時稱為 Proxy。
Windows Vista 提供了標準 Win32 和 Windows Forms 控制項的提供者。 此外,針對未由另一個伺服器端提供者或 Proxy 所服務但有 Microsoft Active Accessibility 實作的任何控制項,後援提供者也提供部分 UI Automation支援。 所有這些提供者都會自動載入,供用戶端應用程式使用。
如需 Win32 和 Windows Forms 控制項支援的詳細資訊,請參閱標準控制項的 UI 自動化支援。
應用程式也可以註冊其他用戶端提供者。
這個主題包含下列章節。
- 散發用戶端提供者
- 註冊及設定用戶端提供者
- 相關主題
散發用戶端提供者
UI Automation會預期在 Managed 程式碼組件中找到用戶端提供者。 這個組件中的命名空間應該和組件同名。 例如,稱為 ContosoProxies.dll 的組件會包含 ContosoProxies 命名空間。 在命名空間中,建立 UIAutomationClientSideProviders 類別。 在靜態 ClientSideProviderDescriptionTable 欄位的實作中,建立用於說明提供者的 ClientSideProviderDescription 結構陣列。
註冊及設定用戶端提供者
藉由呼叫 RegisterClientSideProviderAssembly,載入dynamic-link library (DLL) 中的用戶端提供者。 用戶端應用程式不需進一步的動作,即可使用提供者。
藉由使用 RegisterClientSideProviders,註冊用戶端自己程式碼中實作的提供者。 這個方法會採用 ClientSideProviderDescription 結構陣列做為引數,每個結構會指定下列屬性:
回呼函式,會建立提供者物件。
提供者將服務之控制項的類別名稱。
提供者將服務之應用程式的映像名稱 (通常是可執行檔的完整名稱)。
管理類別名稱與目標應用程式中找到之視窗類別比對方式的旗標。
最後兩個參數為選擇性的。 當用戶端要針對不同應用程式使用不同提供者時,它可以指定目標應用程式的映像名稱。 例如,在支援多個檢視模式的已知應用程式中,用戶端可以針對 Win32 清單檢視控制項使用一個提供者,而在另一個不支援多個檢視模式的已知應用程式中,則針對類似控制項使用另一個提供者。