IWMPStringCollection2
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
IWMPStringCollection2 インターフェイスは、IWMPStringCollection インターフェイスを補完するメソッドを提供します。
メソッド 4
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
isIdentical メソッドは、指定されたオブジェクトが現在のオブジェクトと同一かどうかを示す値を取得します。
| pIWMPStringCollection2 | IWMPStringCollection2* | in | 現在のオブジェクトと比較する対象のオブジェクトを表す IWMPStringCollection2 インターフェイスへのポインター。 |
| pvbool | VARIANT_BOOL* | inout | 比較結果を受け取る VARIANT_BOOL へのポインター。VARIANT_TRUE は、オブジェクトが同一であることを示します。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれますが、これらに限定されません。
| Return code | Description |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
このメソッドを使用するには、ライブラリへの読み取りアクセスが必要です。詳細については、Library Access を参照してください。
Windows Media Player 10 Mobile: このメソッドはサポートされていません。
getItemInfo メソッドは、指定された文字列コレクション項目のインデックスと名前に対応する文字列を取得します。
| lCollectionIndex | INT | in | 属性を取得する対象の文字列コレクション項目の、0 から始まるインデックスを指定する long。 |
| bstrItemName | LPWSTR | in | 属性名を格納する BSTR。 |
| pbstrValue | LPWSTR* | inout | 文字列を受け取る BSTR へのポインター。基になる値が Boolean である属性の場合は、文字列 "true" または "false" を返します。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれますが、これらに限定されません。
| Return code | Description |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
複数の値を持つ属性や複雑な値を持つ属性を取得するには、getItemInfoByType メソッドを使用してください。
このメソッドを使用するには、ライブラリへの読み取りアクセスが必要です。詳細については、Library Access を参照してください。
Windows Media Player 10 Mobile: このメソッドはサポートされていません。
getAttributeCountByType メソッドは、指定された文字列コレクションのインデックス、属性名、および言語に関連付けられた属性の数を取得します。
| lCollectionIndex | INT | in | 属性を取得する対象の文字列コレクション項目の、0 から始まるインデックスを指定する long。 |
| bstrType | LPWSTR | in | 属性名を格納する BSTR。 |
| bstrLanguage | LPWSTR | in | 言語を格納する BSTR。値が null または ""(空文字列)に設定されている場合は、現在のロケール文字列が使用されます。それ以外の場合、値は "en-us" のような有効な RFC 1766 言語文字列である必要があります。 |
| plCount | INT* | inout | 個数を受け取る long へのポインター。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれますが、これらに限定されません。
| Return code | Description |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
このメソッドは、特定の StringCollection 項目について、ある属性名に対応する属性の数を判別するために使用します。取得したインデックス番号は、getItemInfoByType メソッドの 4 番目のパラメーターに渡すことができます。
このメソッドを使用するには、ライブラリへの読み取りアクセスが必要です。詳細については、Library Access を参照してください。
Windows Media Player 10 Mobile: このメソッドはサポートされていません。
getItemInfoByType メソッドは、指定された文字列コレクション項目のインデックス、名前、言語、および属性インデックスに対応する値を取得します。
| lCollectionIndex | INT | in | 属性を取得する対象の文字列コレクション項目の、0 から始まるインデックスを指定する long。 |
| bstrType | LPWSTR | in | 属性名を格納する BSTR。 |
| bstrLanguage | LPWSTR | in | 言語を格納する BSTR。値が null または ""(空文字列)に設定されている場合は、現在のロケール文字列が使用されます。それ以外の場合、値は "en-us" のような有効な RFC 1766 言語文字列である必要があります。 |
| lAttributeIndex | INT | in | 属性の、0 から始まるインデックスを格納する long。 |
| pvarValue | VARIANT* | inout | 返される値を受け取る VARIANT へのポインター。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれますが、これらに限定されません。
| Return code | Description |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
このメソッドは、複数の値を持つ属性や複雑な値を持つ属性をサポートします。getItemInfo メソッドは、複数の値を持つ属性や複雑な値を持つ属性をサポートしません。
bstrType パラメーターに値 "ChildList" を渡すことで、親文字列コレクション内の項目の 1 つに属する子を含む新しい文字列コレクションを取得できます。たとえば、親コレクションに AlbumID の一覧が含まれている場合、このメソッドを使用して、いずれかのアルバムのすべてのトラックを含む子文字列コレクションを取得できます。この方法は、IWMPMediaCollection2::getStringCollectionByQuery メソッドを 2 回呼び出す(1 回目で AlbumID のコレクションを取得し、2 回目で特定の AlbumID に対するタイトルのコレクションを取得する)よりも高速で効率的です。ここで説明した方法で ChildList を使用するには、親文字列コレクションを IWMPCore::get_mediaCollection メソッドではなく、IWMPLibraryServices を通じてメディアコレクションから取得する必要があります。
ChildList を使用する場合は、bstrType パラメーターに値 "ChildList" を、lAttributeIndex パラメーターに値 0 を渡します。返された VARIANT に対して QueryInterface を呼び出すことで IWMPStringCollection2 インターフェイスを取得でき、そこから子リストにアクセスできます。
このメソッドを使用するには、ライブラリへの読み取りアクセスが必要です。詳細については、Library Access を参照してください。
Windows Media Player 10 Mobile: このメソッドはサポートされていません。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IWMPStringCollection2 "{46AD648D-53F1-4A74-92E2-2A1B68D63FD4}" #usecom global IWMPStringCollection2 IID_IWMPStringCollection2 "{}" #comfunc global IWMPStringCollection2_isIdentical 9 sptr,var #comfunc global IWMPStringCollection2_getItemInfo 10 int,wstr,var #comfunc global IWMPStringCollection2_getAttributeCountByType 11 int,wstr,wstr,var #comfunc global IWMPStringCollection2_getItemInfoByType 12 int,wstr,wstr,int,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。#define global IID_IWMPStringCollection2 "{46AD648D-53F1-4A74-92E2-2A1B68D63FD4}" #usecom global IWMPStringCollection2 IID_IWMPStringCollection2 "{}" #comfunc global IWMPStringCollection2_isIdentical 9 sptr,sptr #comfunc global IWMPStringCollection2_getItemInfo 10 int,wstr,sptr #comfunc global IWMPStringCollection2_getAttributeCountByType 11 int,wstr,wstr,sptr #comfunc global IWMPStringCollection2_getItemInfoByType 12 int,wstr,wstr,int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。