Win32 API 日本語リファレンス
ホームUI.Accessibility › IUIAutomation6

IUIAutomation6

COM
IIDaae072da-29e3-413d-87a7-192dbf81ed10継承元IUIAutomation5自前メソッド開始 vtbl70

公式ドキュメント

IUIAutomation5 インターフェースを拡張し、Microsoft UI Automation の機能を制御するための追加メソッドを公開します。

メソッド 9

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 70 HRESULT CreateEventHandlerGroup(IUIAutomationEventHandlerGroup** handlerGroup)

1 回のメソッド呼び出しで 1 つ以上のイベントリスナーを登録します。

handlerGroupIUIAutomationEventHandlerGroup**outUI Automation イベントリスナーのコレクション。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

イベントハンドラーを実装する前に、Understanding Threading Issues で説明されているスレッド処理の問題を理解しておく必要があります。

vtbl 71 HRESULT AddEventHandlerGroup(IUIAutomationElement* element, IUIAutomationEventHandlerGroup* handlerGroup)

CreateEventHandlerGroup で指定されたイベントハンドラーメソッドのコレクションを登録します。

elementIUIAutomationElement*inイベントハンドラーグループに関連付けられた UI Automation 要素へのポインター。
handlerGroupIUIAutomationEventHandlerGroup*inUI Automation イベントリスナーのコレクション。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

イベントハンドラーを実装する前に、Understanding Threading Issues で説明されているスレッド処理の問題を理解しておく必要があります。

イベントの登録解除要求とイベントの受信が同時に発生した場合、ハンドラーの登録解除後にイベントがイベントハンドラーへ配信されることがあります。ベストプラクティスは、Component Object Model (COM) の標準に従い、参照カウントが 0 に達するまでイベントハンドラーオブジェクトを破棄しないことです。イベントの登録解除直後にイベントハンドラーを破棄すると、イベントが遅れて配信された場合にアクセス違反が発生する可能性があります。

vtbl 72 HRESULT RemoveEventHandlerGroup(IUIAutomationElement* element, IUIAutomationEventHandlerGroup* handlerGroup)

指定された UI Automation イベントハンドラーグループを非同期で削除します。

elementIUIAutomationElement*inイベントハンドラーグループに関連付けられた UI Automation 要素へのポインター。
handlerGroupIUIAutomationEventHandlerGroup*inUI Automation イベントリスナーのコレクション。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

イベントハンドラーを実装する前に、Understanding Threading Issues で説明されているスレッド処理の問題を理解しておく必要があります。

イベントの登録解除要求とイベントの受信が同時に発生した場合、ハンドラーの登録解除後にイベントがイベントハンドラーへ配信されることがあります。ベストプラクティスは、Component Object Model (COM) の標準に従い、参照カウントが 0 に達するまでイベントハンドラーオブジェクトを破棄しないことです。イベントの登録解除直後にイベントハンドラーを破棄すると、イベントが遅れて配信された場合にアクセス違反が発生する可能性があります。

vtbl 73 HRESULT get_ConnectionRecoveryBehavior(ConnectionRecoveryBehaviorOptions* connectionRecoveryBehaviorOptions)

支援技術クライアントが、プロバイダーが応答しないときにプロバイダー要求のタイムアウトを調整するかどうかを示します。(Get)

connectionRecoveryBehaviorOptionsConnectionRecoveryBehaviorOptions*outプロバイダー要求のタイムアウトを調整するかどうかを示す値。既定値は ConnectionRecoveryBehaviorOptions_Disabled です。
vtbl 74 HRESULT put_ConnectionRecoveryBehavior(ConnectionRecoveryBehaviorOptions connectionRecoveryBehaviorOptions)

支援技術クライアントが、プロバイダーが応答しないときにプロバイダー要求のタイムアウトを調整するかどうかを示します。(Put)

connectionRecoveryBehaviorOptionsConnectionRecoveryBehaviorOptionsinプロバイダー要求のタイムアウトを調整するかどうかを示す値。既定値は ConnectionRecoveryBehaviorOptions_Disabled です。
vtbl 75 HRESULT get_CoalesceEvents(CoalesceEventsOptions* coalesceEventsOptions)

支援技術クライアントがすべてのイベントを受け取るか、重複するイベントを検出してフィルター処理したサブセットを受け取るかを取得または設定します。(Get)

coalesceEventsOptionsCoalesceEventsOptions*outイベントがフィルター処理されるかどうかを示す値。既定値は CoalesceEventsOptions_Disabled です。
vtbl 76 HRESULT put_CoalesceEvents(CoalesceEventsOptions coalesceEventsOptions)

支援技術クライアントがすべてのイベントを受け取るか、重複するイベントを検出してフィルター処理したサブセットを受け取るかを取得または設定します。(Put)

coalesceEventsOptionsCoalesceEventsOptionsinイベントがフィルター処理されるかどうかを示す値。既定値は CoalesceEventsOptions_Disabled です。
vtbl 77 HRESULT AddActiveTextPositionChangedEventHandler(IUIAutomationElement* element, TreeScope scope, IUIAutomationCacheRequest* cacheRequest, IUIAutomationActiveTextPositionChangedEventHandler* handler)

アクティブなテキスト位置が変化したときに処理を行うメソッドを登録します。

elementIUIAutomationElement*inイベントハンドラーに関連付けられた UI Automation 要素へのポインター。
scopeTreeScopein処理するイベントのスコープ。つまり、イベントが要素自体で発生するか、その先祖および子孫で発生するかを示します。
cacheRequestIUIAutomationCacheRequest*inキャッシュ要求へのポインター。キャッシュが不要な場合は NULL。
handlerIUIAutomationActiveTextPositionChangedEventHandler*inアクティブテキスト位置変更イベントを処理するオブジェクトへのポインター。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

イベントハンドラーを実装する前に、Understanding Threading Issues で説明されているスレッド処理の問題を理解しておく必要があります。

アクティブなテキスト位置は、読み取り専用のテキスト要素(Web ブラウザー、Portable Document Format (PDF) ドキュメント、EPUB ドキュメントなど)の内部または要素間で、ブックマーク(またはリソース内の位置を参照するフラグメント識別子)を使用したナビゲーションイベントによって示されます。例:

このイベントハンドラーを使用して、ブックマーク/ターゲットの視覚的な位置を、読み取り専用テキスト要素内のフォーカス位置と同期させます。これらはブックマークやフラグメント識別子を使用すると食い違うことがあります。

たとえば、同一ページ内のアンカー(<a href="#C4">Jump to Chapter 4</a> ...<h1><a name="C4">Chapter 4</a></h1>)が呼び出されると、視覚的な位置は更新されますが、UI Automation クライアントは元の位置にとどまります。その結果、テキストの読み上げや次項目への移動などの操作が、新しい位置ではなく元の位置から開始されてしまいます。

同様に、新しいページ URI(フラグメント識別子付き: (<a href="www.blah.com#C4">Jump to Chapter 4</a>))をアクティブ化すると、新しいページが読み込まれて指定されたブックマークにジャンプしますが、UI Automation クライアントはページの先頭にとどまります。

EditRich Edit コントロールなどの編集可能なテキスト要素については、SelectionChanged イベントをリッスンできます。

イベントの登録解除要求とイベントの受信が同時に発生した場合、ハンドラーの登録解除後にイベントがイベントハンドラーへ配信されることがあります。ベストプラクティスは、Component Object Model (COM) の標準に従い、参照カウントが 0 に達するまでイベントハンドラーオブジェクトを破棄しないことです。イベントの登録解除直後にイベントハンドラーを破棄すると、イベントが遅れて配信された場合にアクセス違反が発生する可能性があります。

vtbl 78 HRESULT RemoveActiveTextPositionChangedEventHandler(IUIAutomationElement* element, IUIAutomationActiveTextPositionChangedEventHandler* handler)

アクティブテキスト位置変更イベントハンドラーを削除します。

elementIUIAutomationElement*inイベントハンドラーに関連付けられた UI Automation 要素へのポインター。
handlerIUIAutomationActiveTextPositionChangedEventHandler*inアクティブテキスト位置変更イベントを処理するオブジェクトへのポインター。

戻り値

このメソッドは値を返しません。

解説(Remarks)

イベントハンドラーを実装する前に、Understanding Threading Issues で説明されているスレッド処理の問題を理解しておく必要があります。

アクティブなテキスト位置は、読み取り専用のテキスト要素(Web ブラウザー、Portable Document Format (PDF) ドキュメント、EPUB ドキュメントなど)の内部または要素間で、ブックマーク(またはリソース内の位置を参照するフラグメント識別子)を使用したナビゲーションイベントによって示されます。例:

このイベントハンドラーを使用して、ブックマーク/ターゲットの視覚的な位置を、読み取り専用テキスト要素内のフォーカス位置と同期させます。これらはブックマークやフラグメント識別子を使用すると食い違うことがあります。

たとえば、同一ページ内のアンカー(<a href="#C4">Jump to Chapter 4</a> ...<h1><a name="C4">Chapter 4</a></h1>)が呼び出されると、視覚的な位置は更新されますが、UI Automation クライアントは元の位置にとどまります。その結果、テキストの読み上げや次項目への移動などの操作が、新しい位置ではなく元の位置から開始されてしまいます。

同様に、新しいページ URI(フラグメント識別子付き: (<a href="www.blah.com#C4">Jump to Chapter 4</a>))をアクティブ化すると、新しいページが読み込まれて指定されたブックマークにジャンプしますが、UI Automation クライアントはページの先頭にとどまります。

EditRich Edit コントロールなどの編集可能なテキスト要素については、SelectionChanged イベントをリッスンできます。

イベントの登録解除要求とイベントの受信が同時に発生した場合、ハンドラーの登録解除後にイベントがイベントハンドラーへ配信されることがあります。ベストプラクティスは、Component Object Model (COM) の標準に従い、参照カウントが 0 に達するまでイベントハンドラーオブジェクトを破棄しないことです。イベントの登録解除直後にイベントハンドラーを破棄すると、イベントが遅れて配信された場合にアクセス違反が発生する可能性があります。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IUIAutomation6 "{AAE072DA-29E3-413D-87A7-192DBF81ED10}"
#usecom global IUIAutomation6 IID_IUIAutomation6 "{}"
#comfunc global IUIAutomation6_CreateEventHandlerGroup                      70 sptr
#comfunc global IUIAutomation6_AddEventHandlerGroup                         71 sptr,sptr
#comfunc global IUIAutomation6_RemoveEventHandlerGroup                      72 sptr,sptr
#comfunc global IUIAutomation6_get_ConnectionRecoveryBehavior               73 var
#comfunc global IUIAutomation6_put_ConnectionRecoveryBehavior               74 int
#comfunc global IUIAutomation6_get_CoalesceEvents                           75 var
#comfunc global IUIAutomation6_put_CoalesceEvents                           76 int
#comfunc global IUIAutomation6_AddActiveTextPositionChangedEventHandler     77 sptr,int,sptr,sptr
#comfunc global IUIAutomation6_RemoveActiveTextPositionChangedEventHandler  78 sptr,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。