IRawElementProviderSimple3
COM公式ドキュメント
IRawElementProviderSimple2 インターフェースを拡張し、支援技術が優先されるコンテンツの種類をどのように読み上げるべきかに関するメタデータを取得できるようにします。
解説(Remarks)
ナレーターのようなスクリーンリーダー系のアクセシビリティツールは、音声合成を使用してアプリが表示している内容を読み上げます。音声合成は通常、コンテンツの説明に基づいて提供されたコンテンツを適切に読み上げます。
しかし、優先されるコンテンツの種類を説明する際には、音声合成に何らかの補助があると役立つ場合があります。SayAs コマンドは、UI Automation のコア API を通じて、Microsoft UI Automation プロバイダーから UI Automation クライアント(スクリーンリーダーなど)へ正確なコンテンツの読み上げを提供します。
例:
- 日付 10/4 が与えられたとき、その形式は 月/日 でしょうか、それとも 日/月 でしょうか。 スクリーンリーダーがこれを判別できない場合、「10月4日」または「4月10日」と聞こえる可能性があります。
-
文字列「10-100」が与えられたとき、これは
「10 から 100」でしょうか、それとも
「10 引く 100」でしょうか。
「10」を数値として、「-100」を数値としてマークできる機能により、支援技術(AT)がより適切に読み上げられるようになります。
メソッド 1
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
情報をどのように解釈すべきかを示すメタデータを UI Automation 要素から取得します。(IRawElementProviderSimple3.GetMetadataValue)
| targetId | INT | in | 取得するプロパティの ID。 |
| metadataId | UIA_METADATA_ID | in | 取得するメタデータの種類を指定します。 |
| returnVal | VARIANT* | out | メタデータ。 |
戻り値
成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IRawElementProviderSimple3 "{FCF5D820-D7EC-4613-BDF6-42A84CE7DAAF}" #usecom global IRawElementProviderSimple3 IID_IRawElementProviderSimple3 "{}" #comfunc global IRawElementProviderSimple3_GetMetadataValue 8 int,int,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IRawElementProviderSimple3 "{FCF5D820-D7EC-4613-BDF6-42A84CE7DAAF}" #usecom global IRawElementProviderSimple3 IID_IRawElementProviderSimple3 "{}" #comfunc global IRawElementProviderSimple3_GetMetadataValue 8 int,int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。