IUIAutomationCacheRequest
COM公式ドキュメント
キャッシュ要求のプロパティとメソッドを公開します。クライアントアプリケーションは、このインターフェイスを使用して、Microsoft UI Automation 要素を取得する際にキャッシュするプロパティおよびコントロールパターンを指定します。
解説(Remarks)
UI Automation を通じてプロパティやコントロールパターンを取得するには、プロセス間呼び出しが必要となり、パフォーマンスが低下する可能性があります。プロパティやコントロールパターンの値をバッチ操作でキャッシュすることにより、アプリケーションのパフォーマンスを向上させることができます。
CreateCacheRequest を呼び出して新しいキャッシュ要求を作成し、IUIAutomationCacheRequest のメソッドを呼び出して要求を構成します。
メソッド 9
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
キャッシュ要求にプロパティを追加します。
| propertyId | UIA_PROPERTY_ID | in | プロパティ識別子です。プロパティ ID の一覧については、Property Identifiers を参照してください。 |
戻り値
キャッシュ要求にコントロールパターンを追加します。
| patternId | UIA_PATTERN_ID | in | キャッシュ要求に追加するコントロールパターンの識別子です。コントロールパターン ID の一覧については、Control Pattern Identifiers を参照してください。 |
戻り値
解説(Remarks)
既にキャッシュ要求に含まれているコントロールパターンを追加しても効果はありません。
キャッシュ要求のコピーを作成します。
| clonedRequest | IUIAutomationCacheRequest** | out | キャッシュ要求のコピーへのポインターを受け取ります。 |
戻り値
キャッシュの範囲を指定します。(Get)
| scope | TreeScope* | out | キャッシュ対象の範囲(要素自身・子・子孫など)を示す TreeScope 値を受け取るポインタである。 |
解説(Remarks)
要素を取得する際、キャッシュは要素自体のみ(既定の動作)に対して行うことも、要素とその子または子孫に対して行うこともできます。このプロパティは要求の範囲を表します。
キャッシュの範囲を指定します。(Put)
| scope | TreeScope | in | キャッシュ対象とするツリーの範囲を示す TreeScope 値を指定する。 |
解説(Remarks)
要素を取得する際、キャッシュは要素自体のみ(既定の動作)に対して行うことも、要素とその子または子孫に対して行うこともできます。このプロパティは要求の範囲を表します。
キャッシュ時に使用される UI Automation 要素ツリーのビューを指定します。(Get)
| filter | IUIAutomationCondition** | out | キャッシュ対象の要素を絞り込む条件を受け取るインターフェイスポインタへのポインタである。 |
キャッシュ時に使用される UI Automation 要素ツリーのビューを指定します。(Put)
| filter | IUIAutomationCondition* | in | キャッシュ対象の要素を絞り込む条件を表す IUIAutomationCondition へのポインタを指定する。 |
返される要素が基になる UI への完全な参照を含むか、キャッシュされた情報のみを含むかを示します。(Get)
| mode | AutomationElementMode* | out | キャッシュされる要素が完全参照かプロパティのみかを示す AutomationElementMode 値を受け取るポインタである。 |
解説(Remarks)
AutomationElementMode_Full が既定値であり、返される要素が基になる UI への完全な参照を含むことを指定します。AutomationElementMode_None は、返される要素が基になる UI への参照を持たず、キャッシュされた情報のみを含むことを指定します。
GetCurrentPropertyValue や SetFocus を含む要素に対する特定の操作には完全な参照が必要です。参照を持たない要素に対してこれらを実行しようとするとエラーになります。
AutomationElementMode_None を使用すると、完全な参照を設定する際のオーバーヘッドを回避できるため、プロパティのみが必要な場合により効率的です。
返される要素が基になる UI への完全な参照を含むか、キャッシュされた情報のみを含むかを示します。(Put)
| mode | AutomationElementMode | in | キャッシュされる要素のモード(完全参照かプロパティのみか)を示す AutomationElementMode 値を指定する。 |
解説(Remarks)
AutomationElementMode_Full が既定値であり、返される要素が基になる UI への完全な参照を含むことを指定します。AutomationElementMode_None は、返される要素が基になる UI への参照を持たず、キャッシュされた情報のみを含むことを指定します。
GetCurrentPropertyValue や SetFocus を含む要素に対する特定の操作には完全な参照が必要です。参照を持たない要素に対してこれらを実行しようとするとエラーになります。
AutomationElementMode_None を使用すると、完全な参照を設定する際のオーバーヘッドを回避できるため、プロパティのみが必要な場合により効率的です。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IUIAutomationCacheRequest "{B32A92B5-BC25-4078-9C08-D7EE95C48E03}" #usecom global IUIAutomationCacheRequest IID_IUIAutomationCacheRequest "{}" #comfunc global IUIAutomationCacheRequest_AddProperty 3 int #comfunc global IUIAutomationCacheRequest_AddPattern 4 int #comfunc global IUIAutomationCacheRequest_Clone 5 sptr #comfunc global IUIAutomationCacheRequest_get_TreeScope 6 var #comfunc global IUIAutomationCacheRequest_put_TreeScope 7 int #comfunc global IUIAutomationCacheRequest_get_TreeFilter 8 sptr #comfunc global IUIAutomationCacheRequest_put_TreeFilter 9 sptr #comfunc global IUIAutomationCacheRequest_get_AutomationElementMode 10 var #comfunc global IUIAutomationCacheRequest_put_AutomationElementMode 11 int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IUIAutomationCacheRequest "{B32A92B5-BC25-4078-9C08-D7EE95C48E03}" #usecom global IUIAutomationCacheRequest IID_IUIAutomationCacheRequest "{}" #comfunc global IUIAutomationCacheRequest_AddProperty 3 int #comfunc global IUIAutomationCacheRequest_AddPattern 4 int #comfunc global IUIAutomationCacheRequest_Clone 5 sptr #comfunc global IUIAutomationCacheRequest_get_TreeScope 6 sptr #comfunc global IUIAutomationCacheRequest_put_TreeScope 7 int #comfunc global IUIAutomationCacheRequest_get_TreeFilter 8 sptr #comfunc global IUIAutomationCacheRequest_put_TreeFilter 9 sptr #comfunc global IUIAutomationCacheRequest_get_AutomationElementMode 10 sptr #comfunc global IUIAutomationCacheRequest_put_AutomationElementMode 11 int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。