IWMPMediaCollection
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
IWMPMediaCollection インターフェイスは、大量のメディア項目のコレクションを整理するために使用できるメソッドを提供します。
メソッド 12
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
add メソッドは、新しいメディア項目またはプレイリストをライブラリに追加します。
| bstrURL | LPWSTR | in | メディア項目またはプレイリストの場所を指定する URL を格納した文字列。 |
| ppItem | IWMPMedia** | out | 追加された項目またはプレイリストの IWMPMedia インターフェイスへのポインターへのポインター。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。
| リターン コード | 説明 |
|---|---|
| メソッドが成功しました。 |
解説(Remarks)
このメソッドは、指定されたパスに基づいて既存のメディア項目またはプレイリストをライブラリに読み込みます。このメソッドはファイルの移動や変更を行いません。無効なローカル パスが指定された場合、このメソッドは失敗しますが、メディア項目自体がライブラリに追加される前にその有効性が確認されることはありません。
このメソッドは、静的プレイリスト ファイルと自動プレイリスト ファイルの両方を受け付けます。IWMPPlaylistCollection::importPlaylist メソッドを使用して静的プレイリストをライブラリに追加することもできます。
このメソッドを呼び出す前に、ライブラリへのフル アクセス権が必要です。詳細については、Library Access を参照してください。
getAll メソッドは、IWMPPlaylist インターフェイスへのポインターを取得します。このインターフェイスは、ライブラリ内のすべてのメディア項目を含むプレイリストに対応します。
| ppMediaItems | IWMPPlaylist** | out | 要求されたすべてのメディア項目を含むプレイリストの IWMPPlaylist インターフェイスへのポインターへのポインター。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。
| リターン コード | 説明 |
|---|---|
| メソッドが成功しました。 |
解説(Remarks)
このメソッドを呼び出す前に、ライブラリへの読み取りアクセス権が必要です。詳細については、Library Access を参照してください。
IWMPMediaCollection インターフェイスを取得する方法は 2 つあり、getAll メソッドの動作は、そのどちらの方法を使用したかによって異なります。IWMPCore::get_mediaCollection を呼び出してインターフェイスを取得した場合、getAll メソッドはライブラリ内のすべてのメディア項目を返します。IWMPLibrary::get_mediaCollection を呼び出してインターフェイスを取得した場合、getAll メソッドはライブラリ内のオーディオ項目のみを返します。
getByName メソッドは、IWMPPlaylist インターフェイスへのポインターを取得します。このインターフェイスには、指定された名前を持つメディア項目が含まれます。
| bstrName | LPWSTR | in | 指定された名前を格納した文字列。 |
| ppMediaItems | IWMPPlaylist** | out | 取得されたメディア項目の IWMPPlaylist インターフェイスへのポインターへのポインター。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。
| リターン コード | 説明 |
|---|---|
| メソッドが成功しました。 |
解説(Remarks)
このメソッドを呼び出す前に、ライブラリへの読み取りアクセス権が必要です。詳細については、Library Access を参照してください。
IWMPMediaCollection インターフェイスを取得する方法は 2 つあり、getByName メソッドの動作は、そのどちらの方法を使用したかによって異なります。IWMPCore::get_mediaCollection を呼び出してインターフェイスを取得した場合、getByName メソッドはライブラリ内で指定された名前を持つすべてのメディア項目を返します。IWMPLibrary::get_mediaCollection を呼び出してインターフェイスを取得した場合、getByName メソッドはライブラリ内で指定された名前を持つオーディオ項目のみを返します。
getByGenre メソッドは、IWMPPlaylist インターフェイスへのポインターを取得します。このインターフェイスには、指定されたジャンルを持つメディア項目が含まれます。
| bstrGenre | LPWSTR | in | ジャンルを格納した文字列。 |
| ppMediaItems | IWMPPlaylist** | out | 取得されたメディア項目の IWMPPlaylist インターフェイスへのポインターへのポインター。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。
| リターン コード | 説明 |
|---|---|
| メソッドが成功しました。 |
解説(Remarks)
このメソッドを呼び出す前に、ライブラリへの読み取りアクセス権が必要です。詳細については、Library Access を参照してください。
IWMPMediaCollection インターフェイスを取得する方法は 2 つあり、getByGenre メソッドの動作は、そのどちらの方法を使用したかによって異なります。IWMPCore::get_mediaCollection を呼び出してインターフェイスを取得した場合、getByGenre メソッドはライブラリ内で指定されたジャンルに属するすべてのメディア項目を返します。IWMPLibrary::get_mediaCollection を呼び出してインターフェイスを取得した場合、getByGenre メソッドはライブラリ内で指定されたジャンルに属するオーディオ項目のみを返します。
getByAuthor メソッドは、IWMPPlaylist インターフェイスへのポインターを取得します。このインターフェイスには、指定された作成者のメディア項目が含まれます。
| bstrAuthor | LPWSTR | in | 指定された作成者を格納した文字列。 |
| ppMediaItems | IWMPPlaylist** | out | 取得されたメディア項目の IWMPPlaylist インターフェイスへのポインターへのポインター。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。
| リターン コード | 説明 |
|---|---|
| メソッドが成功しました。 |
解説(Remarks)
このメソッドを呼び出す前に、ライブラリへの読み取りアクセス権が必要です。詳細については、Library Access を参照してください。
IWMPMediaCollection インターフェイスを取得する方法は 2 つあり、getByAuthor メソッドの動作は、そのどちらの方法を使用したかによって異なります。IWMPCore::get_mediaCollection を呼び出してインターフェイスを取得した場合、getByAuthor メソッドはライブラリ内で指定された作成者を持つすべてのメディア項目を返します。IWMPLibrary::get_mediaCollection を呼び出してインターフェイスを取得した場合、getByAuthor メソッドはライブラリ内で指定された作成者を持つオーディオ項目のみを返します。
getByAlbum メソッドは、IWMPPlaylist インターフェイスへのポインターを取得します。このインターフェイスには、指定されたアルバムのメディア項目が含まれます。
| bstrAlbum | LPWSTR | in | アルバムを格納した文字列。 |
| ppMediaItems | IWMPPlaylist** | out | 取得されたメディア項目の IWMPPlaylist インターフェイスへのポインターへのポインター。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。
| リターン コード | 説明 |
|---|---|
| メソッドが成功しました。 |
解説(Remarks)
このメソッドを呼び出す前に、ライブラリへの読み取りアクセス権が必要です。詳細については、Library Access を参照してください。
IWMPMediaCollection インターフェイスを取得する方法は 2 つあり、getByAlbum メソッドの動作は、そのどちらの方法を使用したかによって異なります。IWMPCore::get_mediaCollection を呼び出してインターフェイスを取得した場合、getByAlbum メソッドはライブラリ内で指定されたアルバムに属するすべてのメディア項目を返します。IWMPLibrary::get_mediaCollection を呼び出してインターフェイスを取得した場合、getByAlbum メソッドはライブラリ内で指定されたアルバムに属するオーディオ項目のみを返します。
getByAttribute メソッドは、IWMPPlaylist インターフェイスへのポインターを取得します。このインターフェイスは、指定された属性が指定された値を持つメディア項目に対応します。
| bstrAttribute | LPWSTR | in | 指定された属性を格納した文字列。 |
| bstrValue | LPWSTR | in | 指定された値を格納した文字列。 |
| ppMediaItems | IWMPPlaylist** | out | 取得されたメディア項目の IWMPPlaylist インターフェイスへのポインターへのポインター。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。
| リターン コード | 説明 |
|---|---|
| メソッドが成功しました。 |
解説(Remarks)
このメソッドは、データベース内の属性の値に一致するメディア項目を検索する汎用的なクエリを作成するために使用できます。これは、ユーザー定義属性の場合に便利です。属性が存在しない場合はエラーになります。
このメソッドを使用して、特定の種類のすべてのメディア項目を取得できます。属性名 "MediaType" と次のいずれかの値を使用します。
| 値 | 説明 |
|---|---|
| audio | 音楽やその他のオーディオのみの項目 |
| other | .asf ファイルやストリームの URL など、その他の項目。 |
| photo | 写真項目。Windows Media Player 10 が必要です。 |
| playlist | メディア項目として表されるプレイリスト。 |
| radio | ラジオ局の項目。Windows Media Player 10 では使用されません。 |
| video | ビデオ項目。 |
このメソッドを呼び出す前に、ライブラリへの読み取りアクセス権が必要です。詳細については、Library Access を参照してください。
IWMPMediaCollection インターフェイスを取得する方法は 2 つあり、getByAttribute メソッドの動作は、そのどちらの方法を使用したかによって異なります。IWMPCore::get_mediaCollection を呼び出してインターフェイスを取得した場合、getByAttribute メソッドはライブラリ内で指定された属性と値を持つすべてのメディア項目を返します。IWMPLibrary::get_mediaCollection を呼び出してインターフェイスを取得した場合、getByAttribute メソッドはライブラリ内で指定された属性と値を持つオーディオ項目のみを返します。
remove メソッドは、指定された項目をメディア コレクションから削除します。
| pItem | IWMPMedia* | in | 削除する項目を識別する IWMPMedia インターフェイスへのポインター。 |
| varfDeleteFile | VARIANT_BOOL | in | 指定された項目をメソッドが削除するかどうかを指定します。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。
| リターン コード | 説明 |
|---|---|
| メソッドが成功しました。 |
解説(Remarks)
このメソッドは、ライブラリから項目を削除します。このメソッドは、ユーザーのコンピューターからファイルを削除することはありません。
このメソッドを呼び出す前に、ライブラリへの読み取りアクセス権が必要です。詳細については、Library Access を参照してください。
getAttributeStringCollection メソッドは、IWMPStringCollection インターフェイスへのポインターを取得します。このインターフェイスは、指定されたメディアの種類における、指定された属性のすべての値のセットを表します。
| bstrAttribute | LPWSTR | in | 値を取得する対象の属性を格納した文字列。 |
| bstrMediaType | LPWSTR | in | 値を取得する対象のメディアの種類を格納した文字列。 |
| ppStringCollection | IWMPStringCollection** | out | 取得された値の IWMPStringCollection インターフェイスへのポインターへのポインター。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。
| リターン コード | 説明 |
|---|---|
| メソッドが成功しました。 |
解説(Remarks)
このメソッドを呼び出す前に、ライブラリへの読み取りアクセス権が必要です。詳細については、Library Access を参照してください。
Windows Media Player でサポートされている属性については、Attribute Reference のセクションを参照してください。
getMediaAtom メソッドは、利用可能な属性のセット内で指定された属性が存在するインデックスを取得します。
| bstrItemName | LPWSTR | in | インデックスを取得する対象の項目の名前を格納した文字列。 |
| plAtom | INT* | inout | インデックスを格納する long へのポインター。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。
| リターン コード | 説明 |
|---|---|
| メソッドが成功しました。 |
解説(Remarks)
このメソッドで取得したインデックス番号を IWMPMedia::getItemInfoByAtom に渡すことで、属性値にアクセスできます。この手法は、大きなプレイリストを扱う場合、IWMPMedia::getItemInfo を通じて属性値を名前でアクセスするよりも、一般的により効率的です。
このメソッドを呼び出す前に、ライブラリへの読み取りアクセス権が必要です。詳細については、Library Access を参照してください。
setDeleted メソッドは、指定されたメディア項目を削除済み項目フォルダーに移動します。
| pItem | IWMPMedia* | in | 移動する項目の IWMPMedia インターフェイスへのポインター。 |
| varfIsDeleted | VARIANT_BOOL | in | 項目を移動するかどうかを指定します。この値は常に true でなければなりません。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には次の表のものが含まれますが、これらに限定されません。
| リターン コード | 説明 |
|---|---|
| メソッドが成功しました。 |
解説(Remarks)
このメソッドは、ユーザーのコンピューターからファイルを削除することはありません。
このメソッドを呼び出す前に、ライブラリへの読み取りアクセス権が必要です。詳細については、Library Access を参照してください。
Windows Media Player 10 Mobile: このメソッドは常に E_INVALIDARG を返します。
| pItem | IWMPMedia* | in | 状態を確認するメディア項目の IWMPMedia。 |
| pvarfIsDeleted | VARIANT_BOOL* | inout | 項目が削除済みかを受け取る。VARIANT_TRUE で削除済み。 |
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IWMPMediaCollection "{8363BC22-B4B4-4B19-989D-1CD765749DD1}" #usecom global IWMPMediaCollection IID_IWMPMediaCollection "{}" #comfunc global IWMPMediaCollection_add 7 wstr,sptr #comfunc global IWMPMediaCollection_getAll 8 sptr #comfunc global IWMPMediaCollection_getByName 9 wstr,sptr #comfunc global IWMPMediaCollection_getByGenre 10 wstr,sptr #comfunc global IWMPMediaCollection_getByAuthor 11 wstr,sptr #comfunc global IWMPMediaCollection_getByAlbum 12 wstr,sptr #comfunc global IWMPMediaCollection_getByAttribute 13 wstr,wstr,sptr #comfunc global IWMPMediaCollection_remove 14 sptr,int #comfunc global IWMPMediaCollection_getAttributeStringCollection 15 wstr,wstr,sptr #comfunc global IWMPMediaCollection_getMediaAtom 16 wstr,var #comfunc global IWMPMediaCollection_setDeleted 17 sptr,int #comfunc global IWMPMediaCollection_isDeleted 18 sptr,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。#define global IID_IWMPMediaCollection "{8363BC22-B4B4-4B19-989D-1CD765749DD1}" #usecom global IWMPMediaCollection IID_IWMPMediaCollection "{}" #comfunc global IWMPMediaCollection_add 7 wstr,sptr #comfunc global IWMPMediaCollection_getAll 8 sptr #comfunc global IWMPMediaCollection_getByName 9 wstr,sptr #comfunc global IWMPMediaCollection_getByGenre 10 wstr,sptr #comfunc global IWMPMediaCollection_getByAuthor 11 wstr,sptr #comfunc global IWMPMediaCollection_getByAlbum 12 wstr,sptr #comfunc global IWMPMediaCollection_getByAttribute 13 wstr,wstr,sptr #comfunc global IWMPMediaCollection_remove 14 sptr,int #comfunc global IWMPMediaCollection_getAttributeStringCollection 15 wstr,wstr,sptr #comfunc global IWMPMediaCollection_getMediaAtom 16 wstr,sptr #comfunc global IWMPMediaCollection_setDeleted 17 sptr,int #comfunc global IWMPMediaCollection_isDeleted 18 sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。