Win32 API 日本語リファレンス
ホームMedia.MediaPlayer › IWMPMedia

IWMPMedia

COMIDispatch (デュアル)
IDispatch を実装(デュアルインターフェース)。HSP では comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。
IID94d55e95-3fac-11d3-b155-00c04f79faa6継承元IDispatch呼び出し名前(IDispatch) または vtbl自前メソッド開始 vtbl7

公式ドキュメント

IWMPMedia インターフェイスを使用して、メディア項目のプロパティを設定および取得します。

メソッド 18

vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。

vtbl 7 HRESULT get_isIdentical(IWMPMedia* pIWMPMedia, VARIANT_BOOL* pvbool)

get_isIdentical メソッドは、指定したオブジェクトが現在のオブジェクトと同一かどうかを示す値を取得します。

pIWMPMediaIWMPMedia*inこのメソッドが現在のオブジェクトと比較する IWMPMedia オブジェクトへのポインター。
pvboolVARIANT_BOOL*inoutオブジェクトが同一かどうかを示す VARIANT_BOOL へのポインター。

戻り値

このメソッドは HRESULT を返します。指定できる値には次の表の値が含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドが成功しました。
vtbl 8 HRESULT get_sourceURL(LPWSTR* pbstrSourceURL)

get_sourceURL メソッドは、メディア項目の URL を取得します。

pbstrSourceURLLPWSTR*inoutソース URL を格納する BSTR へのポインター。

戻り値

このメソッドは HRESULT を返します。指定できる値には次の表の値が含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドが成功しました。
vtbl 9 HRESULT get_name(LPWSTR* pbstrName)

get_name メソッドは、メディア項目の名前を取得します。

pbstrNameLPWSTR*inout名前を格納する BSTR へのポインター。

戻り値

このメソッドは HRESULT を返します。指定できる値には次の表の値が含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドが成功しました。

解説(Remarks)

このメソッドを呼び出す前に、ライブラリへの読み取りアクセス権が必要です。詳細については、Library Access を参照してください。

vtbl 10 HRESULT put_name(LPWSTR bstrName)

put_name メソッドは、メディア項目の名前を設定します。

bstrNameLPWSTRin名前を格納する BSTR

戻り値

このメソッドは HRESULT を返します。指定できる値には次の表の値が含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドが成功しました。

解説(Remarks)

このメソッドを呼び出す前に、ライブラリへのフルアクセス権が必要です。詳細については、Library Access を参照してください。

Windows Media Player 10 Mobile: このメソッドは常に E_INVALIDARG を返します。

vtbl 11 HRESULT get_imageSourceWidth(INT* pWidth)

get_imageSourceWidth メソッドは、現在のメディア項目の幅をピクセル単位で取得します。

pWidthINT*inout幅を指定する long へのポインター。

戻り値

このメソッドは HRESULT を返します。指定できる値には次の表の値が含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドが成功しました。

解説(Remarks)

デジタルメディア項目が現在の項目でない場合、このプロパティはゼロを返します。

このメソッドを呼び出す前に、ライブラリへの読み取りアクセス権が必要です。詳細については、Library Access を参照してください。

vtbl 12 HRESULT get_imageSourceHeight(INT* pHeight)

get_imageSourceHeight メソッドは、現在のメディア項目の高さをピクセル単位で取得します。

pHeightINT*inout高さを指定する long へのポインター。

戻り値

このメソッドは HRESULT を返します。指定できる値には次の表の値が含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドが成功しました。

解説(Remarks)

メディア項目が現在の項目でない場合、このプロパティはゼロを返します。

このメソッドを呼び出す前に、ライブラリへの読み取りアクセス権が必要です。詳細については、Library Access を参照してください。

vtbl 13 HRESULT get_markerCount(INT* pMarkerCount)

get_markerCount メソッドは、メディア項目内のマーカーの数を取得します。

pMarkerCountINT*inoutマーカー数を格納する long へのポインター。

戻り値

このメソッドは HRESULT を返します。指定できる値には次の表の値が含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドが成功しました。

解説(Remarks)

ファイルにマーカーがない場合、またはメディア項目が IWMPCore::get_currentMedia で指定された項目と同じでない場合、このメソッドはゼロを返します。

マーカー番号は 1 から始まります。

このメソッドを呼び出す前に、ライブラリへの読み取りアクセス権が必要です。詳細については、Library Access を参照してください。

vtbl 14 HRESULT getMarkerTime(INT MarkerNum, DOUBLE* pMarkerTime)

getMarkerTime メソッドは、指定したインデックスにあるマーカーの時間を取得します。

MarkerNumINTinマーカーのインデックスを指定する long
pMarkerTimeDOUBLE*inoutマーカーの時間を指定する double へのポインター。

戻り値

このメソッドは HRESULT を返します。指定できる値には次の表の値が含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドが成功しました。

解説(Remarks)

指定したマーカーが存在しない場合、このメソッドは NULL を返します。

一部のメディア項目にはマーカーが含まれていません。現在のメディア項目に含まれるマーカーの数を調べるには、get_markerCount を使用してください。

マーカーのインデックス番号は 1 から始まります。

このメソッドを呼び出す前に、ライブラリへの読み取りアクセス権が必要です。詳細については、Library Access を参照してください。

vtbl 15 HRESULT getMarkerName(INT MarkerNum, LPWSTR* pbstrMarkerName)

getMarkerName メソッドは、指定したインデックスにあるマーカーの名前を取得します。

MarkerNumINTinマーカーのインデックスを指定する long
pbstrMarkerNameLPWSTR*inoutマーカー名を格納する BSTR へのポインター。

戻り値

このメソッドは HRESULT を返します。指定できる値には次の表の値が含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドが成功しました。

解説(Remarks)

指定したマーカーが存在しない場合、このメソッドは NULL を返します。

一部のメディア項目にはマーカーが含まれていません。現在のメディア項目に含まれるマーカーの数を調べるには、get_markerCount を使用してください。

マーカーのインデックス番号は 1 から始まります。

このメソッドを呼び出す前に、ライブラリへの読み取りアクセス権が必要です。詳細については、Library Access を参照してください。

vtbl 16 HRESULT get_duration(DOUBLE* pDuration)

get_duration メソッドは、現在のメディア項目の長さを秒単位で取得します。

pDurationDOUBLE*inout長さを格納する double へのポインター。

戻り値

このメソッドは HRESULT を返します。指定できる値には次の表の値が含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドが成功しました。

解説(Remarks)

このメソッドを IWMPCore::get_currentMedia で指定された項目以外のメディア項目に対して使用した場合、有効な値が含まれないことがあります。

ユーザーのライブラリに含まれていないファイルの長さを取得するには、Windows Media Player がそのファイルを開くまで待つ必要があります。つまり、現在の OpenState が MediaOpen と等しくなっている必要があります。これは IWMPEvents::OpenStateChange イベントを処理するか、IWMPCore::get_openState の値を定期的に確認することで検証できます。

プレイリストの場合、各メディア項目の長さは、プレイリストを開いたときではなく、個々のメディア項目を開いたときに取得できます。

このメソッドを呼び出す前に、ライブラリへの読み取りアクセス権が必要です。詳細については、Library Access を参照してください。

vtbl 17 HRESULT get_durationString(LPWSTR* pbstrDuration)

get_durationString メソッドは、現在のメディア項目の長さを HH:MM:SS 形式で示す文字列を取得します。

pbstrDurationLPWSTR*inout長さを格納する BSTR へのポインター。

戻り値

このメソッドは HRESULT を返します。指定できる値には次の表の値が含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドが成功しました。

解説(Remarks)

このメソッドを IWMPCore::get_currentMedia で指定された項目以外のメディア項目に対して使用した場合、有効な値が含まれないことがあります。メディア項目の長さが 1 時間未満の場合、戻り値から時間の部分は省略されます。

このメソッドを呼び出す前に、ライブラリへの読み取りアクセス権が必要です。詳細については、Library Access を参照してください。

vtbl 18 HRESULT get_attributeCount(INT* plCount)

get_attributeCount メソッドは、メディア項目に対して照会または設定できる属性の数を取得します。

plCountINT*inoutカウントを格納する long へのポインター。

戻り値

このメソッドは HRESULT を返します。指定できる値には次の表の値が含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドが成功しました。

解説(Remarks)

このメソッドを呼び出す前に、ライブラリへの読み取りアクセス権が必要です。詳細については、Library Access を参照してください。

Windows Media Player でサポートされる属性については、Windows Media Player の Attribute Reference を参照してください。

Windows Media Player 10 Mobile: メディア項目の属性は、メディアコレクションを通じて項目から取得しない限り、再生中にのみ利用できます。

vtbl 19 HRESULT getAttributeName(INT lIndex, LPWSTR* pbstrItemName)

getAttributeName メソッドは、指定したインデックスに対応する属性の名前を取得します。

lIndexINTinインデックスを格納する long
pbstrItemNameLPWSTR*inout属性名を格納する BSTR へのポインター。

戻り値

このメソッドは HRESULT を返します。指定できる値には次の表の値が含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドが成功しました。

解説(Remarks)

返される属性名は、getItemInfo と組み合わせて使用し、特定の名前付き属性の値を取得できます。

このメソッドを呼び出す前に、ライブラリへの読み取りアクセス権が必要です。詳細については、Library Access を参照してください。

Windows Media Player でサポートされる属性については、Windows Media Player の Attribute Reference を参照してください。

Windows Media Player 10 Mobile: メディア項目の属性は、メディアコレクションを通じて項目から取得しない限り、再生中にのみ利用できます。

vtbl 20 HRESULT getItemInfo(LPWSTR bstrItemName, LPWSTR* pbstrVal)

getItemInfo メソッドは、メディア項目に対して指定した属性の値を取得します。

bstrItemNameLPWSTRin項目名を格納する BSTR
pbstrValLPWSTR*inout返される値を格納する BSTR へのポインター。

戻り値

このメソッドは HRESULT を返します。指定できる値には次の表の値が含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドが成功しました。

解説(Remarks)

このメソッドは、個々のメディア項目、またはプレイリストの一部であるメディア項目のメタデータを取得します。

get_attributeCount メソッドは、特定のメディア項目で利用できる属性名の数を取得します。次に、インデックス番号を getAttributeName メソッドで使用して、利用可能な各属性の名前を特定できます。個々の属性名は getItemInfo に渡すことができます。

複数の値を持つ属性や複雑な値を持つ属性を取得するには、getItemInfoByType メソッドを使用してください。

ローカルライブラリ以外のソース(リモートライブラリ、ポータブルデバイス、または CD)から利用できる属性のセットは、それらの他のソースによって定義されます。

このメソッドを呼び出す前に、ライブラリへの読み取りアクセス権が必要です。詳細については、Library Access を参照してください。

UPnP 経由で Windows のメディアライブラリを共有するために、Windows Media Player はコンテンツディレクトリサービス(CDS)を作成します。

この CDS は UPnP 経由で公開されます。これにより、他のデバイスがライブラリをナビゲートして参照できるようになります。

Windows 7 では、アプリケーションは Windows Media Player の TrackingID 属性と MediaType 属性を使用して、CDS 内の各項目のオブジェクト ID を構築できます。この構築方法は、将来のバージョンの Windows で変更される可能性があることに注意してください。アプリケーションは、getItemInfo の呼び出しで、これらの各属性文字列を bstrItemName パラメーターに渡します。getItemInfo は、pbstrVal パラメーターが指す変数に各属性の値を返します。次に、アプリケーションは以下の構文を使用して各オブジェクト ID を構築します。

TrackingID.0.MediaTypeID

この構文には次の意味があります。

Windows Media Player 10 Mobile: メディア項目の属性は、メディアコレクションを通じて項目から取得しない限り、再生中にのみ利用できます。
vtbl 21 HRESULT setItemInfo(LPWSTR bstrItemName, LPWSTR bstrVal)

setItemInfo メソッドは、メディア項目に対して指定した属性の値を設定します。

bstrItemNameLPWSTRin属性名を格納する BSTR
bstrValLPWSTRin新しい値を格納する BSTR

戻り値

このメソッドは HRESULT を返します。指定できる値には次の表の値が含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドが成功しました。

解説(Remarks)

get_attributeCount メソッドは、特定のメディア項目で利用できる属性の数を取得します。次に、インデックス番号を getAttributeName メソッドで使用して、このメソッドで使用できる組み込み属性の名前を特定できます。

このメソッドを使用する前に、isReadOnlyItem メソッドを使用して、特定の属性を設定できるかどうかを確認してください。

このメソッドを呼び出す前に、ライブラリへのフルアクセス権が必要です。詳細については、Library Access を参照してください。

Note

Windows Media Player コントロールをアプリケーションに埋め込んでいる場合、変更したファイル属性は、ユーザーが Windows Media Player を実行するまでデジタルメディアファイルに書き込まれません。C++ で記述されたリモートアプリケーションでコントロールを使用している場合、変更したファイル属性は、変更後まもなくデジタルメディアファイルに書き込まれます。いずれの場合も、変更内容はライブラリを通じてすぐに利用できます。

Windows Media Player 10 Mobile: このメソッドは常に E_INVALIDARG を返します。

vtbl 22 HRESULT getItemInfoByAtom(INT lAtom, LPWSTR* pbstrVal)

getItemInfoByAtom メソッドは、指定したインデックス番号を持つ属性の値を取得します。

lAtomINTin利用可能な属性のセット内で、特定の属性が存在するインデックスを指定する long
pbstrValLPWSTR*inout返される値を格納する BSTR へのポインター。

戻り値

このメソッドは HRESULT を返します。指定できる値には次の表の値が含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドが成功しました。

解説(Remarks)

このメソッドは、属性のインデックス番号を使用して、特定のメディア項目のメタデータを取得するために使用できます。get_attributeCount メソッドを使用すると、メディア項目で利用できる属性の数を特定できます。

MediaCollection オブジェクトの getMediaAtom メソッドを使用して、特定の属性のインデックスを取得することもできます。この手法は、大きなプレイリストを扱う場合、getItemInfo メソッドや getItemInfoByType メソッドよりも一般的に効率的です。

このメソッドを呼び出す前に、ライブラリへの読み取りアクセス権が必要です。詳細については、Library Access を参照してください。

Windows Media Player 10 Mobile: メディア項目の属性は、メディアコレクションを通じて項目から取得しない限り、再生中にのみ利用できます。

vtbl 23 HRESULT isMemberOf(IWMPPlaylist* pPlaylist, VARIANT_BOOL* pvarfIsMemberOf)

isMemberOf メソッドは、指定したメディア項目が指定したプレイリストのメンバーかどうかを示す値を取得します。

pPlaylistIWMPPlaylist*inIWMPPlaylist インターフェイスへのポインター。
pvarfIsMemberOfVARIANT_BOOL*inout項目がプレイリストのメンバーかどうかを示す VARIANT_BOOL へのポインター。

戻り値

このメソッドは HRESULT を返します。指定できる値には次の表の値が含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドが成功しました。

解説(Remarks)

このメソッドでは、MediaCollection オブジェクトを通じて取得したプレイリストを確認することはできません。メディア項目が特定の名前付きプレイリストのメンバーかどうかをテストするには、IWMPCore::get_playlistCollection メソッドでプレイリストコレクションを取得します。コレクションを取得したら、IWMPPlaylistCollection::getByName メソッドを呼び出して個々のプレイリストを取得します。

このメソッドを呼び出す前に、ライブラリへの読み取りアクセス権が必要です。詳細については、Library Access を参照してください。

vtbl 24 HRESULT isReadOnlyItem(LPWSTR bstrItemName, VARIANT_BOOL* pvarfIsReadOnly)

isReadOnlyItem メソッドは、指定したメディア項目の属性を編集できるかどうかを示す値を取得します。

bstrItemNameLPWSTRin項目名を格納する BSTR
pvarfIsReadOnlyVARIANT_BOOL*inout属性が読み取り専用かどうかを指定する VARIANT_BOOL へのポインター。

戻り値

このメソッドは HRESULT を返します。指定できる値には次の表の値が含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドが成功しました。

解説(Remarks)

属性が読み取り専用の場合、setItemInfo メソッドで設定することはできません。このメソッドは、異なるバージョンの Windows Media Player で使用した場合、特定の属性に対して異なる値を返すことがあることに注意してください。

このメソッドを呼び出す前に、ライブラリへの読み取りアクセス権が必要です。詳細については、Library Access を参照してください。

Windows Media Player 10 Mobile: このメソッドは常に TRUE に設定された VARIANT_BOOL を取得します。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IWMPMedia "{94D55E95-3FAC-11D3-B155-00C04F79FAA6}"
#usecom global IWMPMedia IID_IWMPMedia "{}"
#comfunc global IWMPMedia_get_isIdentical        7 sptr,var
#comfunc global IWMPMedia_get_sourceURL          8 var
#comfunc global IWMPMedia_get_name               9 var
#comfunc global IWMPMedia_put_name               10 wstr
#comfunc global IWMPMedia_get_imageSourceWidth   11 var
#comfunc global IWMPMedia_get_imageSourceHeight  12 var
#comfunc global IWMPMedia_get_markerCount        13 var
#comfunc global IWMPMedia_getMarkerTime          14 int,var
#comfunc global IWMPMedia_getMarkerName          15 int,var
#comfunc global IWMPMedia_get_duration           16 var
#comfunc global IWMPMedia_get_durationString     17 var
#comfunc global IWMPMedia_get_attributeCount     18 var
#comfunc global IWMPMedia_getAttributeName       19 int,var
#comfunc global IWMPMedia_getItemInfo            20 wstr,var
#comfunc global IWMPMedia_setItemInfo            21 wstr,wstr
#comfunc global IWMPMedia_getItemInfoByAtom      22 int,var
#comfunc global IWMPMedia_isMemberOf             23 sptr,var
#comfunc global IWMPMedia_isReadOnlyItem         24 wstr,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。
; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。