安全な配列を使用するためのベスト プラクティス

Microsoft UI オートメーション API の多くのインターフェイス メソッドは、SAFEARRAY データ型のセーフ配列と呼ばれる引数を受け取ります。 このトピックでは、UI オートメーション アプリケーションで安全な配列を使用するためのベスト プラクティスについて説明します。

クライアント

UI オートメーション クライアント API メソッドで使用されるすべての安全な配列は、0 から始まる 1 次元配列です。 UI オートメーション クライアント メソッドのセーフ配列を作成するには、SafeArrayCreateVector 関数を使用し、セーフ配列の読み取りと書き込みを行う場合は、SafeArrayGetElement 関数と SafeArrayPutElement 関数を使用します。 セーフ配列の使用が完了したら、セーフ配列を作成したか、UI オートメーションクライアント メソッドから受け取ったかにかかわらず、SafeArrayDestroy 関数を使用して、常に破棄します。

GetCurrentPropertyValue などのプロパティ取得メソッドなど、いくつかのUI オートメーションメソッドは、POINT または UiaRect 構造体を含むことができる VARIANTを取得します。 POINT は、インデックス 0 の x メンバーとインデックス 1 の y メンバーを含む double (VT_R8) の安全な配列として VARIANT にパックされます。 同様に、UiaRect は、それぞれインデックス 0 から 3 の左、および高さのメンバーを持つ double の安全な配列として VARIANT にパックされます。 UiaRect 構造体の配列の場合、セーフ配列には、UiaRect ごとに 4 つの double のシーケンシャル配列が含まれます。 最初の UiaRectおよび高さのメンバーはインデックス 0 から 3 を占め、2 番目の四角形のメンバーはインデックス 4 から 7 を占めるなどです。

IUIAutomation インターフェイスには、SAFEARRAY と他のさまざまなデータ型の間で変換するための次のメソッドが含まれています。

メソッド 説明
IUIAutomation::IntNativeArrayToSafeArray 整数の配列を SAFEARRAY に変換します。
IUIAutomation::IntSafeArrayToNativeArray 整数の SAFEARRAY を 配列に変換します。
IUIAutomation::SafeArrayToRectNativeArray 四角形の座標を含む SAFEARRAYRECT 型の配列に変換します。

 

プロバイダー

プロバイダーは、プロバイダーから情報を取得するために 呼び出UI オートメーションインターフェイス メソッドを実装する必要があります。 多くの場合、この情報は値の配列で構成されます。 配列をUI オートメーションに返すには、プロバイダーは配列を SAFEARRAY 構造体にパックする必要があります。 配列要素は、想定されるデータ型である必要があり、予想される順序で表示する必要があります。

概念

UI オートメーション プロパティの概要

UI オートメーションの基礎