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

IUIAutomationEventHandlerGroup

COM
IIDc9ee12f2-c13b-4408-997c-639914377f4e継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IUIAutomation6 で定義される CreateEventHandlerGroup および AddEventHandlerGroup メソッドを通じて一括登録するために、1 つ以上のイベントをコレクションに追加するメソッドを公開します。

メソッド 7

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

vtbl 3 HRESULT AddActiveTextPositionChangedEventHandler(TreeScope scope, IUIAutomationCacheRequest* cacheRequest, IUIAutomationActiveTextPositionChangedEventHandler* handler)

アクティブなテキスト位置が変化したときに処理するメソッドを(イベントハンドラーグループに)登録します。

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 イベントをリッスンできます。

vtbl 4 HRESULT AddAutomationEventHandler(UIA_EVENT_ID eventId, TreeScope scope, IUIAutomationCacheRequest* cacheRequest, IUIAutomationEventHandler* handler)

Microsoft UI Automation イベントを処理するメソッドを登録します。

eventIdUIA_EVENT_IDinメソッドが処理するイベントの識別子。イベント ID の一覧については、Event Identifiers を参照してください。
scopeTreeScopein処理するイベントのスコープ。つまり、イベントが要素自体に対するものか、その先祖および子孫に対するものかを指定します。
cacheRequestIUIAutomationCacheRequest*inキャッシュ要求へのポインター。キャッシュが不要な場合は NULL
handlerIUIAutomationEventHandler*inイベントを処理するオブジェクトへのポインター。

戻り値

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

vtbl 5 HRESULT AddChangesEventHandler(TreeScope scope, INT* changeTypes, INT changesCount, IUIAutomationCacheRequest* cacheRequest, IUIAutomationChangesEventHandler* handler)

変更イベントを処理するメソッドを登録します。

scopeTreeScopein処理するイベントのスコープ。つまり、イベントが要素自体に対するものか、その先祖および子孫に対するものかを指定します。
changeTypesINT*inイベントが表す変更の種類を示す整数のリストへのポインター。
changesCountINTinこのイベントで発生した変更の数。
cacheRequestIUIAutomationCacheRequest*inキャッシュ要求へのポインター。キャッシュが不要な場合は NULL
handlerIUIAutomationChangesEventHandler*in変更イベントを処理するオブジェクトへのポインター。

戻り値

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

解説(Remarks)

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

vtbl 6 HRESULT AddNotificationEventHandler(TreeScope scope, IUIAutomationCacheRequest* cacheRequest, IUIAutomationNotificationEventHandler* handler)

通知イベントを処理するメソッドを登録します。

scopeTreeScopein処理するイベントのスコープ。つまり、イベントが要素自体に対するものか、その先祖および子孫に対するものかを指定します。
cacheRequestIUIAutomationCacheRequest*inキャッシュ要求へのポインター。キャッシュが不要な場合は NULL
handlerIUIAutomationNotificationEventHandler*in通知イベントを処理するオブジェクトへのポインター。

戻り値

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

解説(Remarks)

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

vtbl 7 HRESULT AddPropertyChangedEventHandler(TreeScope scope, IUIAutomationCacheRequest* cacheRequest, IUIAutomationPropertyChangedEventHandler* handler, UIA_PROPERTY_ID* propertyArray, INT propertyCount)

プロパティ変更イベントを処理するメソッドを登録します。

scopeTreeScopein処理するイベントのスコープ。つまり、イベントが要素自体に対するものか、その先祖および子に対するものかを指定します。
cacheRequestIUIAutomationCacheRequest*inキャッシュ要求へのポインター。キャッシュが不要な場合は NULL
handlerIUIAutomationPropertyChangedEventHandler*inイベントを処理するオブジェクトへのポインター。
propertyArrayUIA_PROPERTY_ID*in対象とする UI Automation プロパティへのポインター。プロパティ ID の一覧については、Property Identifiers を参照してください。
propertyCountINTin監視するプロパティの数。

戻り値

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

解説(Remarks)

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

vtbl 8 HRESULT AddStructureChangedEventHandler(TreeScope scope, IUIAutomationCacheRequest* cacheRequest, IUIAutomationStructureChangedEventHandler* handler)

構造変更イベントを処理するメソッドを登録します。

scopeTreeScopein処理するイベントのスコープ。つまり、イベントが要素自体に対するものか、その先祖および子孫に対するものかを指定します。
cacheRequestIUIAutomationCacheRequest*inキャッシュ要求へのポインター。キャッシュが不要な場合は NULL
handlerIUIAutomationStructureChangedEventHandler*in構造変更イベントを処理するオブジェクトへのポインター。

戻り値

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

解説(Remarks)

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

vtbl 9 HRESULT AddTextEditTextChangedEventHandler(TreeScope scope, TextEditChangeType textEditChangeType, IUIAutomationCacheRequest* cacheRequest, IUIAutomationTextEditTextChangedEventHandler* handler)

プログラムによるテキスト編集イベントを処理するメソッドを登録します。

scopeTreeScopein処理するイベントのスコープ。つまり、イベントが要素自体に対するものか、その先祖および子孫に対するものかを指定します。
textEditChangeTypeTextEditChangeTypeinリッスンする特定の変更の種類。クライアントはテキスト編集の変更の種類ごとに個別に登録します。これにより、UI Automation システムは実行時に登録済みのリスナーを確認でき、リスナーが存在しない場合に特定のテキスト編集の変更に対するイベントの発生を回避できます。
cacheRequestIUIAutomationCacheRequest*inキャッシュ要求へのポインター。キャッシュが不要な場合は NULL
handlerIUIAutomationTextEditTextChangedEventHandler*inプログラムによるテキスト編集イベントを処理するオブジェクトへのポインター。

戻り値

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

解説(Remarks)

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

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IUIAutomationEventHandlerGroup "{C9EE12F2-C13B-4408-997C-639914377F4E}"
#usecom global IUIAutomationEventHandlerGroup IID_IUIAutomationEventHandlerGroup "{}"
#comfunc global IUIAutomationEventHandlerGroup_AddActiveTextPositionChangedEventHandler  3 int,sptr,sptr
#comfunc global IUIAutomationEventHandlerGroup_AddAutomationEventHandler                 4 int,int,sptr,sptr
#comfunc global IUIAutomationEventHandlerGroup_AddChangesEventHandler                    5 int,var,int,sptr,sptr
#comfunc global IUIAutomationEventHandlerGroup_AddNotificationEventHandler               6 int,sptr,sptr
#comfunc global IUIAutomationEventHandlerGroup_AddPropertyChangedEventHandler            7 int,sptr,sptr,var,int
#comfunc global IUIAutomationEventHandlerGroup_AddStructureChangedEventHandler           8 int,sptr,sptr
#comfunc global IUIAutomationEventHandlerGroup_AddTextEditTextChangedEventHandler        9 int,int,sptr,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。