IAccPropServices
COM公式ドキュメント
アクセシブル要素に注釈を付けるためのメソッド、および識別文字列(identity string)を操作するためのメソッドを公開します。
メソッド 15
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
SetPropValue を使用して、注釈を付けるアクセシブル要素を指定し、注釈を付けるプロパティを指定し、そのプロパティの新しい値を指定します。
| pIDString | BYTE* | in | 注釈を付けるアクセシブル要素を識別します。 |
| dwIDStringLen | DWORD | in | pIDString パラメーターで識別される文字列の長さを指定します。 |
| idProp | GUID | in | 注釈を付けるアクセシブル要素のプロパティを指定します。 |
| var | VARIANT | in | プロパティの新しい値を指定します。 |
戻り値
Type: HRESULT
成功した場合は S_OK を返します。
idProp がサポートされているプロパティでない場合、var がそのプロパティに対してサポートされている型でない場合、または識別文字列が有効でない場合は E_INVALIDARG を返します。
メモリ不足などの例外的なエラー状況では、その他のエラーコードを返す場合があります。
解説(Remarks)
サポートされているプロパティとその想定される型の一覧については、サポートに関するセクションを参照してください。現在、一部のプロパティはコールバックを使用する場合にのみサポートされ、このメソッドを使用して直接指定することはできない点に注意してください。
サーバーは SetPropServer を使用して、アクセシブル要素のプロパティ配列に注釈を付けるために使用するコールバックオブジェクトを指定します。
| pIDString | BYTE* | in | 注釈を付けるアクセシブル要素を識別します。 |
| dwIDStringLen | DWORD | in | pIDString パラメーターで識別される文字列の長さを指定します。 |
| paProps | GUID* | in | 指定したコールバックオブジェクトによって処理されるプロパティの配列を指定します。 |
| cProps | INT | in | 指定したコールバックオブジェクトによって処理されるプロパティの配列を指定します。 |
| pServer | IAccPropServer* | in | クライアントがオーバーライドされたプロパティのいずれかを要求したときに呼び出されるコールバックオブジェクトを指定します。 |
| annoScope | AnnoScope | in | ANNO_THIS(注釈が指定したアクセシブル要素のみに影響することを示す)、または ANNO_CONTAINER(注釈がその要素とその直下の子要素に適用されることを示す)を指定できます。 |
戻り値
Type: HRESULT
成功した場合は S_OK を返します。
paProps 配列内のいずれかのプロパティがサポートされているプロパティでない場合、識別文字列が有効でない場合、または annoScope が ANNO_THIS または ANNO_CONTAINER のいずれでもない場合は E_INVALIDARG を返します。
メモリ不足などの例外的なエラー状況では、その他のエラーコードを返す場合があります。
解説(Remarks)
サポートされているプロパティとその想定される型の一覧については、サポートに関するセクションを参照してください。
注釈ランタイムは AddRef を使用して、pServer コールバックオブジェクトの参照カウンターを適切にインクリメントします。呼び出し元は、このメソッドを呼び出した後に自由に Release できます。注釈ランタイムは、注釈を付けているアクセシブル要素が使用されなくなった後、コールバックオブジェクトを自動的に解放します。
サーバーは ClearProps を使用して、以前に注釈を付けたアクセシブル要素のプロパティを既定値に戻します。
| pIDString | BYTE* | in | 注釈を解除するアクセシブル要素を識別します。 |
| dwIDStringLen | DWORD | in | pIDString の長さです。 |
| paProps | GUID* | in | リセットするプロパティの配列を指定します。これらのプロパティは、注釈が付けられる前に示していた既定の動作に戻ります。 |
| cProps | INT | in | paProps 配列のサイズです。 |
戻り値
Type: HRESULT
成功した場合は、指定したプロパティがアクセシブルオブジェクトに一度も注釈されていなかった場合でも S_OK を返します。既にクリアされているプロパティをクリアすることは成功と見なされます。
paProps 配列内のいずれかのプロパティがサポートされていない場合は E_INVALIDARG を返します。
メモリ不足などの例外的なエラー状況では、その他のエラーコードを返す場合があります。
解説(Remarks)
サポートされているプロパティとその想定される型の一覧については、サポートに関するセクションを参照してください。
プロパティの注釈をクリアすると、関連するリソースが解放されます。コールバックプロパティサーバーが使用されていた場合(SetPropServer を参照)、それも解放されます。
このメソッドは SetPropValue をラップし、HWND ベースのアクセシブル要素に注釈を付ける呼び出し元に便利なエントリポイントを提供します。新しい値が文字列である場合は、代わりに IAccPropServices::SetHwndPropStr を使用できます。
| hwnd | HWND | in | 注釈を付けるアクセシブル要素を識別します。これは識別文字列の代わりになります。 |
| idObject | DWORD | in | 注釈を付けるアクセシブル要素を識別します。これは識別文字列の代わりになります。 |
| idChild | DWORD | in | 注釈を付けるアクセシブル要素を識別します。これは識別文字列の代わりになります。 |
| idProp | GUID | in | その要素のどのプロパティに注釈を付けるかを指定します。 |
| var | VARIANT | in | そのプロパティの新しい値を指定します。 |
戻り値
Type: HRESULT
成功した場合は S_OK を返します。
idProp プロパティがサポートされていない場合は E_INVALIDARG を返します。
メモリ不足などの例外的なエラー状況では、その他のエラーコードを返す場合があります。
解説(Remarks)
このメソッドを使用すると、呼び出し元は識別文字列を取得する必要がなく、hwnd、idObject、idChild の各パラメーターを直接指定できます。
このメソッドは SetPropValue をラップし、HWND ベースのアクセシブル要素に注釈を付ける呼び出し元により便利なエントリポイントを提供します。
| hwnd | HWND | in | 注釈を付けるアクセシブル要素を識別します。これは識別文字列の代わりになります。 |
| idObject | DWORD | in | 注釈を付けるアクセシブル要素を識別します。これは識別文字列の代わりになります。 |
| idChild | DWORD | in | 注釈を付けるアクセシブル要素を識別します。これは識別文字列の代わりになります。 |
| idProp | GUID | in | その要素のどのプロパティに注釈を付けるかを指定します。 |
| str | LPWSTR | in | そのプロパティの新しい値を指定します。 |
戻り値
解説(Remarks)
このメソッドを使用すると、呼び出し元は識別文字列を取得する必要がなく、hwnd、idObject、idChild の各パラメーターを直接指定できます。
このメソッドは SetPropServer をラップし、HWND ベースのアクセシブル要素に注釈を付ける呼び出し元に便利なエントリポイントを提供します。
| hwnd | HWND | in | 注釈を付けるアクセシブル要素を識別します。これは識別文字列の代わりになります。 |
| idObject | DWORD | in | 注釈を付けるアクセシブル要素を識別します。これは識別文字列の代わりになります。 |
| idChild | DWORD | in | 注釈を付けるアクセシブル要素を識別します。これは識別文字列の代わりになります。 |
| paProps | GUID* | in | 指定したコールバックオブジェクトによって処理されるプロパティの配列を指定します。 |
| cProps | INT | in | paProps 配列内のプロパティの数を指定します。 |
| pServer | IAccPropServer* | in | コールバックオブジェクトを指定します。これは、クライアントがオーバーライドされたプロパティのいずれかを要求したときに呼び出されます。 |
| annoScope | AnnoScope | in | ANNO_THIS(注釈が指定したアクセシブル要素のみに影響することを示す)、または ANNO_CONTAINER(注釈がその要素とその直下の子要素に適用されることを示す)を指定できます。 |
戻り値
Type: HRESULT
成功した場合は S_OK を返します。
paProps 配列内のいずれかのプロパティがサポートされているプロパティでない場合、識別文字列が有効でない場合、または annoScope が ANNO_THIS または ANNO_CONTAINER のいずれでもない場合は E_INVALIDARG を返します。
メモリ不足などの例外的なエラー状況では、その他のエラーコードを返す場合があります。
解説(Remarks)
このメソッドを使用すると、呼び出し元は識別文字列を取得する必要がなく、hwnd、idObject、idChild の各パラメーターを直接指定できます。
このメソッドは SetPropValue、SetPropServer、および ClearProps をラップし、HWND ベースのアクセシブル要素に注釈を付ける呼び出し元に便利なエントリポイントを提供します。
| hwnd | HWND | in | 注釈を付けるアクセシブル要素を識別します。これは識別文字列の代わりになります。 |
| idObject | DWORD | in | 注釈を付けるアクセシブル要素を識別します。これは識別文字列の代わりになります。 |
| idChild | DWORD | in | 注釈を付けるアクセシブル要素を識別します。これは識別文字列の代わりになります。 |
| paProps | GUID* | in | リセットするプロパティの配列を指定します。これらのプロパティは、注釈が付けられる前に示していた既定の動作に戻ります。 |
| cProps | INT | in | paProps 配列内のプロパティの数を指定します。 |
戻り値
Type: HRESULT
成功した場合は、指定したプロパティがアクセシブルオブジェクトに一度も注釈されていなかった場合でも S_OK を返します。既にクリアされているプロパティをクリアすることは成功と見なされます。
paProps 配列内のいずれかのプロパティがサポートされていない場合は E_INVALIDARG を返します。
メモリ不足などの例外的なエラー状況では、その他のエラーコードを返す場合があります。
戻り値の説明については、対応する SetPropValue、SetPropServer、または ClearProps メソッドを参照してください。
解説(Remarks)
このメソッドを使用すると、呼び出し元は識別文字列を取得する必要がなく、hwnd、idObject、idChild の各パラメーターを直接指定できます。
さらに、SetHwndPropStr はパラメーターとして通常の Unicode 文字列を受け取ります。呼び出し元が BSTR を特別に割り当てる必要はありません。
呼び出し元は ComposeHwndIdentityString を使用して識別文字列を取得します。
| hwnd | HWND | in | 呼び出し元が識別したいアクセシブル要素の HWND を指定します。 |
| idObject | DWORD | in | アクセシブル要素のオブジェクト ID を指定します。 |
| idChild | DWORD | in | アクセシブル要素の子 ID を指定します。 |
| ppIDString | BYTE** | out | 識別文字列を受け取るバッファーへのポインターです。呼び出された側は CoTaskMemAlloc を使用してこのバッファーを割り当てます。使用が終わったら、呼び出し元は CoTaskMemFree を呼び出してバッファーを解放する必要があります。 |
| pdwIDStringLen | DWORD* | out | 識別文字列の長さを受け取るバッファーへのポインターです。 |
戻り値
Type: HRESULT
成功した場合は S_OK を返します。
hwnd、idObject、または idChild が有効でない場合は E_INVALIDARG を返します。
メモリ不足などの例外的なエラー状況では、その他のエラーコードを返す場合があります。
このメソッドを使用して、識別文字列によって識別されるアクセシブル要素の HWND、オブジェクト ID、および子 ID を判別します。
| pIDString | BYTE* | in | HWND ベースのアクセシブル要素の識別文字列を含むバッファーへのポインターです。 |
| dwIDStringLen | DWORD | in | pIDString で指定された識別文字列の長さを指定します。 |
| phwnd | HWND* | out | アクセシブル要素の HWND を受け取るバッファーへのポインターです。 |
| pidObject | DWORD* | out | アクセシブル要素のオブジェクト ID を受け取るバッファーへのポインターです。 |
| pidChild | DWORD* | out | アクセシブル要素の子 ID を受け取るバッファーへのポインターです。 |
戻り値
Type: HRESULT
成功した場合は S_OK を返します。
phwnd、pidObject、または pidChild が有効でない場合、または指定された識別文字列が HWND ベースの識別文字列でない場合は E_INVALIDARG を返します。
メモリ不足などの例外的なエラー状況では、その他のエラーコードを返す場合があります。
解説(Remarks)
このメソッドは、指定された識別文字列が HWND ベースの識別文字列である場合にのみ成功します。このメソッドは、ANNO_CONTAINER スコープで登録された IAccPropServer コールバックサーバーで使用すると便利です。指定された識別文字列から、クライアントがサーバーを呼び出している対象の子要素(idChild)をサーバーが判別できるためです。
このメソッドは SetPropValue をラップし、HMENU ベースのアクセシブル要素に注釈を付ける呼び出し元に便利なエントリポイントを提供します。新しい値が文字列である場合は、代わりに IAccPropServices::SetHmenuPropStr を使用できます。
| hmenu | HMENU | in | 注釈を付ける HMENU ベースのアクセシブル要素を識別します。 |
| idChild | DWORD | in | アクセシブル要素の子 ID を指定します。 |
| idProp | GUID | in | アクセシブル要素のどのプロパティに注釈を付けるかを指定します。 |
| var | VARIANT | in | idProp プロパティの新しい値を指定します。 |
戻り値
このメソッドは SetPropValue をラップし、HMENU ベースのアクセシブル要素に注釈を付ける呼び出し元により便利なエントリポイントを提供します。
| hmenu | HMENU | in | 注釈を付ける HMENU ベースのアクセシブル要素を識別します。 |
| idChild | DWORD | in | アクセシブル要素の子 ID を指定します。 |
| idProp | GUID | in | アクセシブル要素のどのプロパティに注釈を付けるかを指定します。 |
| str | LPWSTR | in | idProp プロパティの新しい値を指定します。 |
戻り値
解説(Remarks)
このメソッドを使用すると、呼び出し元は識別文字列を取得する必要がなく、hmenu、idObject、idChild の各パラメーターを直接指定できます。
このメソッドは SetPropServer をラップし、HMENU ベースのアクセシブル要素に注釈を付ける呼び出し元に便利なエントリポイントを提供します。
| hmenu | HMENU | in | 注釈を付ける HMENU アクセシブル要素を識別します。 |
| idChild | DWORD | in | 注釈を付けるアクセシブル要素を識別します。これは識別文字列の代わりになります。 |
| paProps | GUID* | in | 指定したコールバックオブジェクトによって処理されるプロパティの配列を指定します。 |
| cProps | INT | in | paProps 配列内のプロパティの数を指定します。 |
| pServer | IAccPropServer* | in | コールバックオブジェクトを指定します。これは、クライアントがオーバーライドされたプロパティのいずれかを要求したときに呼び出されます。 |
| annoScope | AnnoScope | in | ANNO_THIS(注釈が指定したアクセシブル要素のみに影響することを示す)、または ANNO_CONTAINER(注釈がその要素とその直下の子要素に適用されることを示す)を指定できます。 |
戻り値
Type: HRESULT
成功した場合は S_OK を返します。
paProps 配列内のいずれかのプロパティがサポートされているプロパティでない場合、識別文字列が有効でない場合、または annoScope が ANNO_THIS または ANNO_CONTAINER のいずれでもない場合は E_INVALIDARG を返します。
メモリ不足などの例外的なエラー状況では、その他のエラーコードを返す場合があります。
解説(Remarks)
このメソッドを使用すると、呼び出し元は識別文字列を取得する必要がなく、hmenu と idChild の各パラメーターを直接指定できます。
このメソッドは ClearProps をラップし、HMENU ベースのアクセシブル要素に注釈を付ける呼び出し元に便利なエントリポイントを提供します。
| hmenu | HMENU | in | 注釈を付ける HMENU ベースのアクセシブル要素を識別します。 |
| idChild | DWORD | in | アクセシブル要素の子 ID を指定します。 |
| paProps | GUID* | in | リセットするプロパティの配列を指定します。これらのプロパティは、注釈が付けられる前に示していた既定の動作に戻ります。 |
| cProps | INT | in | paProps 配列内のプロパティの数を指定します。 |
戻り値
Type: HRESULT
成功した場合は、指定したプロパティがアクセシブルオブジェクトに一度も注釈されていなかった場合でも S_OK を返します。既にクリアされているプロパティをクリアすることは成功と見なされます。
paProps 配列内のいずれかのプロパティがサポートされていない場合は E_INVALIDARG を返します。
メモリ不足などの例外的なエラー状況では、その他のエラーコードを返す場合があります。
その他のパラメーターと戻り値の説明については、ClearProps メソッドを参照してください。
解説(Remarks)
このメソッドを使用すると、呼び出し元は識別文字列を取得する必要がなく、hmenu と idChild の各パラメーターを直接指定できます。
呼び出し元は ComposeHmenuIdentityString を使用して、HMENU ベースのアクセシブル要素の識別文字列を取得します。
| hmenu | HMENU | in | HMENU ベースのアクセシブル要素を識別します。 |
| idChild | DWORD | in | アクセシブル要素の子 ID を指定します。 |
| ppIDString | BYTE** | out | 識別文字列を受け取るバッファーへのポインターです。呼び出された側は CoTaskMemAlloc を使用してこのバッファーを割り当てます。使用が終わったら、呼び出し元は CoTaskMemFree を呼び出してバッファーを解放する必要があります。 |
| pdwIDStringLen | DWORD* | out | 識別文字列の長さを受け取るバッファーへのポインターです。 |
戻り値
Type: HRESULT
成功した場合は S_OK を返します。
hmenu または idChild が有効でない場合は E_INVALIDARG を返します。
メモリ不足などの例外的なエラー状況では、その他のエラーコードを返す場合があります。
このメソッドを使用して、識別文字列によって識別されるアクセシブル要素の HMENU、オブジェクト ID、および子 ID を判別します。
| pIDString | BYTE* | in | HMENU ベースのアクセシブル要素の識別文字列を含むバッファーへのポインターです。 |
| dwIDStringLen | DWORD | in | pIDString で指定された識別文字列の長さを指定します。 |
| phmenu | HMENU* | out | アクセシブル要素の HMENU を受け取るバッファーへのポインターです。 |
| pidChild | DWORD* | out | アクセシブル要素の子 ID を受け取るバッファーへのポインターです。 |
戻り値
Type: HRESULT
成功した場合は S_OK を返します。
phmenu または pidChild が有効でない場合、または指定された識別文字列が HMENU ベースの識別文字列でない場合は E_INVALIDARG を返します。
メモリ不足などの例外的なエラー状況では、その他のエラーコードを返す場合があります。
解説(Remarks)
このメソッドは、指定された識別文字列が HMENU ベースの識別文字列である場合にのみ成功します。このメソッドは、ANNO_CONTAINER スコープで登録された IAccPropServer コールバックサーバーで使用すると便利です。指定された識別文字列から、クライアントがサーバーを呼び出している対象の子要素(idChild)をサーバーが判別できるためです。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IAccPropServices "{6E26E776-04F0-495D-80E4-3330352E3169}" #usecom global IAccPropServices IID_IAccPropServices "{B5F8350B-0548-48B1-A6EE-88BD00B4A5E7}" #comfunc global IAccPropServices_SetPropValue 3 var,int,int,int #comfunc global IAccPropServices_SetPropServer 4 var,int,var,int,sptr,int #comfunc global IAccPropServices_ClearProps 5 var,int,var,int #comfunc global IAccPropServices_SetHwndProp 6 sptr,int,int,int,int #comfunc global IAccPropServices_SetHwndPropStr 7 sptr,int,int,int,wstr #comfunc global IAccPropServices_SetHwndPropServer 8 sptr,int,int,var,int,sptr,int #comfunc global IAccPropServices_ClearHwndProps 9 sptr,int,int,var,int #comfunc global IAccPropServices_ComposeHwndIdentityString 10 sptr,int,int,var,var #comfunc global IAccPropServices_DecomposeHwndIdentityString 11 var,int,sptr,var,var #comfunc global IAccPropServices_SetHmenuProp 12 sptr,int,int,int #comfunc global IAccPropServices_SetHmenuPropStr 13 sptr,int,int,wstr #comfunc global IAccPropServices_SetHmenuPropServer 14 sptr,int,var,int,sptr,int #comfunc global IAccPropServices_ClearHmenuProps 15 sptr,int,var,int #comfunc global IAccPropServices_ComposeHmenuIdentityString 16 sptr,int,var,var #comfunc global IAccPropServices_DecomposeHmenuIdentityString 17 var,int,sptr,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IAccPropServices "{6E26E776-04F0-495D-80E4-3330352E3169}" #usecom global IAccPropServices IID_IAccPropServices "{B5F8350B-0548-48B1-A6EE-88BD00B4A5E7}" #comfunc global IAccPropServices_SetPropValue 3 sptr,int,int,int #comfunc global IAccPropServices_SetPropServer 4 sptr,int,sptr,int,sptr,int #comfunc global IAccPropServices_ClearProps 5 sptr,int,sptr,int #comfunc global IAccPropServices_SetHwndProp 6 sptr,int,int,int,int #comfunc global IAccPropServices_SetHwndPropStr 7 sptr,int,int,int,wstr #comfunc global IAccPropServices_SetHwndPropServer 8 sptr,int,int,sptr,int,sptr,int #comfunc global IAccPropServices_ClearHwndProps 9 sptr,int,int,sptr,int #comfunc global IAccPropServices_ComposeHwndIdentityString 10 sptr,int,int,sptr,sptr #comfunc global IAccPropServices_DecomposeHwndIdentityString 11 sptr,int,sptr,sptr,sptr #comfunc global IAccPropServices_SetHmenuProp 12 sptr,int,int,int #comfunc global IAccPropServices_SetHmenuPropStr 13 sptr,int,int,wstr #comfunc global IAccPropServices_SetHmenuPropServer 14 sptr,int,sptr,int,sptr,int #comfunc global IAccPropServices_ClearHmenuProps 15 sptr,int,sptr,int #comfunc global IAccPropServices_ComposeHmenuIdentityString 16 sptr,int,sptr,sptr #comfunc global IAccPropServices_DecomposeHmenuIdentityString 17 sptr,int,sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。