使用安全陣列的最佳做法
Microsoft UI 自動化 API 的許多介面方法會採用稱為安全陣列的自變數,SAFEARRAY 數據類型。 本主題描述在使用者介面自動化應用程式中使用安全陣列的最佳做法。
客戶
與UI自動化用戶端 API 方法搭配使用的所有安全陣列都是以零起始的一維數位列。 若要為 UI 自動化用戶端方法建立安全陣列,請使用 SafeArrayCreateVector 函式,要讀取和寫入安全陣列,請使用 SafeArrayGetElement 和 SafeArrayPutElement 函式。 當您完成使用安全陣列時,請一律使用 SafeArrayDestroy 函數進行銷毀,無論您是建立安全陣列還是從 UI 自動化客戶端方法接收它。
數個UI自動化方法,包括屬性擷取方法,例如 getCurrentPropertyValue、擷取 VARIANT,可以包含 POINT 或 UiaRect 結構。 POINT 將封裝為 VARIANT,作為安全型雙精度浮點數陣列 (VT_R8),其中索引 0 是 x 成員,索引 1 是 y 成員。 同樣地,UiaRect 將封裝成為 VARIANT,作為安全的雙精度浮點數陣列,其中 左邊、上邊、寬度和 高度 位於索引 0 到 3 的成員。 針對 UiaRect 結構的陣列,安全陣列會為每個 UiaRect包含四個雙精度的循序陣列。 左、上、寬度,高度 第一個 UiaRect 成員 佔用索引 0 到 3、第二個矩形的成員佔用索引 4 到 7 等。
IUIAutomation 介面包含下列方法,可用於轉換 SAFEARRAY 和其他各種數據類型。
方法 | 描述 |
---|---|
IUIAutomation::IntNativeArrayToSafeArray | 將整數陣轉換為 SAFEARRAY。 |
IUIAutomation::IntSafeArrayToNativeArray | 將 SAFEARRAY 整數轉換成陣列。 |
IUIAutomation::SafeArrayToRectNativeArray | 將 SAFEARRAY 中包含的矩形座標轉換成類型為 RECT的陣列。 |
供應商
提供者必須實作一些介面方法,供 UI 自動化呼叫以擷取來自提供者的資訊。 許多時候,這項資訊是由值的陣列所組成。 若要將數位傳回UI自動化,提供者必須將數位封裝成 SAFEARRAY 結構。 陣列元素必須是預期的數據類型,而且必須以預期的順序顯示。
相關主題