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

IAccessibleEx

COM
IIDf8b80ada-2c44-48d0-89be-5ff23c9cd875継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

Microsoft Active Accessibility をサポートするコントロールについて、Microsoft UI Automation が追加情報を取得するために呼び出すメソッドを公開します。

解説(Remarks)

このインターフェースは、IAccessible インターフェースも実装しているカスタムコントロールに実装できます。これにより、完全な UI Automation プロバイダーを実装するコストをかけることなく、UI Automation のサポートを追加できます。

メソッド 4

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

vtbl 3 HRESULT GetObjectForChild(INT idChild, IAccessibleEx** pRetVal)

この要素の指定された子を表す IAccessibleEx インターフェースを取得します。

idChildINTin子要素の識別子。
pRetValIAccessibleEx**outIAccessibleEx インターフェースへのポインターを受け取ります。

戻り値

型: HRESULT

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

解説(Remarks)

この実装が子 ID を使用しない場合、指定された子に対して IAccessibleEx インターフェースを提供できない場合、または自身が子要素を表す場合、pRetValNULL を返します。

idChild は、独自の IAccessible インターフェースを持つオブジェクトではなく、実際の MSAA 子要素を表す必要があります。

vtbl 4 HRESULT GetIAccessiblePair(IAccessible** ppAcc, INT* pidChild)

この項目の IAccessible インターフェースと子 ID を取得します。

ppAccIAccessible**outこのオブジェクトの IAccessible インターフェースへのポインターを受け取ります。このオブジェクトが子要素である場合は親オブジェクトの IAccessible インターフェースを受け取ります。
pidChildINT*out子 ID を受け取ります。このオブジェクトが子要素でない場合は CHILDID_SELF を受け取ります。

戻り値

型: HRESULT

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

vtbl 5 HRESULT GetRuntimeId(SAFEARRAY** pRetVal)

この要素のランタイム識別子を取得します。

pRetValSAFEARRAY**outランタイム識別子へのポインターを受け取ります。

戻り値

型: HRESULT

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

解説(Remarks)

ランタイム識別子は、プロバイダーが定義する整数の配列であり、その最初の項目は UiaAppendRuntimeId でなければなりません。ランタイム識別子は親ウィンドウ内で一意でなければなりません。

MSAA-to-UIA プロキシは、(ウィンドウハンドルと合わせて)ランタイム識別子を使用して、2 つのインターフェースインスタンスが同じ基になる要素を参照しているかどうかを判断します。IAccessibleEx::GetRuntimeId が実装されていない場合、プロキシは 2 つの IAccessible オブジェクトに対してフィールドごとの比較を行って同等かどうかを判断しますが、これは効率が劣ります。

vtbl 6 HRESULT ConvertReturnedElement(IRawElementProviderSimple* pIn, IAccessibleEx** ppRetValOut)

プロパティ値として返された要素の IAccessibleEx インターフェースを取得します。

pInIRawElementProviderSimple*inプロパティとして取得された IRawElementProviderSimple インターフェースへのポインター。
ppRetValOutIAccessibleEx**outその要素の IAccessibleEx インターフェースへのポインターを受け取ります。

戻り値

型: HRESULT

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

解説(Remarks)

このメソッドは、Microsoft UI Automation と Microsoft Active Accessibility の間のブリッジによって実装されます。それ以外のほとんどの実装では、ppRetValOutNULL に設定した上で E_NOTIMPL を返す必要があります。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IAccessibleEx "{F8B80ADA-2C44-48D0-89BE-5FF23C9CD875}"
#usecom global IAccessibleEx IID_IAccessibleEx "{}"
#comfunc global IAccessibleEx_GetObjectForChild       3 int,sptr
#comfunc global IAccessibleEx_GetIAccessiblePair      4 sptr,var
#comfunc global IAccessibleEx_GetRuntimeId            5 var
#comfunc global IAccessibleEx_ConvertReturnedElement  6 sptr,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。