使用安全陣列的最佳做法

Microsoft 消費者介面自動化 API 的許多介面方法都會採用SAFEARRAY資料類型的稱為安全陣列的引數。 本主題描述在消費者介面自動化應用程式中使用安全陣列的最佳做法。

用戶端

與 消費者介面自動化 用戶端 API 方法搭配使用的所有安全陣列都是以零起始的一維陣列。 若要為消費者介面自動化用戶端方法建立安全陣列,請使用SafeArrayCreateVector函式,以及讀取和寫入安全陣列,請使用SafeArrayGetElement 和 SafeArrayPutElement函式。 當您完成使用安全陣列時,請一律使用SafeArrayDestroy函式加以終結,不論您是建立安全陣列還是從消費者介面自動化用戶端方法接收它。

數個消費者介面自動化方法,包括GetCurrentPropertyValue等屬性擷取方法,擷取可包含POINTUiaRect結構的VARIANTPOINT會封裝成VARIANT做為安全雙精度浮點數組, (VT_R8) 索引為x成員的索引 0,以及索引 1 的y成員。 同樣地,UiaRect會分別封裝成具有寬度高度成員之雙精度浮點數的VARIANT陣列。 對於 UiaRect 結構的陣列,安全陣列會針對每個 UiaRect包含四個雙精度浮點數的循序陣列。 第一個UiaRect寬度高度成員佔用索引 0 到 3、第二個矩形的成員佔用索引 4 到 7 等。

IUIAutomation介面包含下列方法,可用於在SAFEARRAY與各種其他資料類型之間進行轉換。

方法 描述
IUIAutomation::IntNativeArrayToSafeArray 將整數陣列轉換為 SAFEARRAY
IUIAutomation::IntSafeArrayToNativeArray 將整數的 SAFEARRAY 轉換為數組。
IUIAutomation::SafeArrayToRectNativeArray 將包含矩形座標的 SAFEARRAY 轉換為 RECT類型的陣列。

 

提供者

提供者必須實作一些介面方法,消費者介面自動化呼叫以從提供者擷取資訊。 許多時候,這項資訊是由值的陣列所組成。 若要將陣列傳回至消費者介面自動化,提供者必須將陣列封裝成SAFEARRAY結構。 陣列元素必須是預期的資料類型,而且必須以預期的順序出現。

概念

UI 自動化屬性概觀

UI 自動化基礎