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

IWMPControls

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

公式ドキュメント

IWMPControls インターフェイスは、メディア項目の再生を操作する手段を提供します。

メソッド 16

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

vtbl 7 HRESULT get_isAvailable(LPWSTR bstrItem, VARIANT_BOOL* pIsAvailable)

get_isAvailable メソッドは、指定した種類の情報が利用可能か、または指定した操作を実行できるかどうかを示します。

bstrItemLPWSTRin

BSTR。次のいずれかの値を格納します。

説明
currentItem ユーザーが IWMPControls::put_currentItem メソッドを設定できるかどうかを判定します。
currentMarker ユーザーが特定のマーカーへシークできるかどうかを判定します。
currentPosition ユーザーがファイル内の特定の位置へシークできるかどうかを判定します。一部のファイルはシークをサポートしません。
fastForward ファイルが早送りをサポートしているか、およびその機能を呼び出せるかどうかを判定します。多くのファイルの種類(またはライブストリーム)は fastForward をサポートしません。
fastReverse ファイルが fastReverse をサポートしているか、およびその機能を呼び出せるかどうかを判定します。多くのファイルの種類(またはライブストリーム)は fastReverse をサポートしません。
next ユーザーがプレイリスト内の次の項目へシークできるかどうかを判定します。
pause IWMPControls::pause メソッドが利用可能かどうかを判定します。
play IWMPControls::play メソッドが利用可能かどうかを判定します。
previous ユーザーがプレイリスト内の前の項目へシークできるかどうかを判定します。
step 再生中に IWMPControls2::step メソッドが利用可能かどうかを判定します。
stop IWMPControls::stop メソッドが利用可能かどうかを判定します。
pIsAvailableVARIANT_BOOL*inout指定した種類の情報が利用可能か、または指定した操作を実行できるかどうかを示す VARIANT_BOOL へのポインター。

戻り値

このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれますが、これらに限定されません。

リターンコード 説明
S_OK
メソッドは成功しました。
vtbl 8 HRESULT play()

play メソッドは、現在のメディア項目の再生を開始するか、一時停止中の項目の再生を再開します。

戻り値

このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれますが、これらに限定されません。

リターンコード 説明
S_OK
メソッドは成功しました。

解説(Remarks)

早送りまたは巻き戻し中にこのメソッドを呼び出すと、再生速度は 1.0 に設定されます。

vtbl 9 HRESULT stop()

stop メソッドは、メディア項目の再生を停止します。

戻り値

このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれますが、これらに限定されません。

リターンコード 説明
S_OK
メソッドは成功しました。

解説(Remarks)

このメソッドを呼び出すと、Windows Media Player はオーディオデバイスなど、使用しているシステムリソースを解放します。ただし、現在のメディア項目は解放されません。

Windows Media Player が停止すると、メディア項目内の現在の再生位置は項目の先頭にリセットされます。その後 IWMPControls::play を呼び出すと、メディア項目の先頭から再生が開始されます。現在の位置を変更せずに再生を中断するには、IWMPControls::pause メソッドを使用します。

vtbl 10 HRESULT pause()

pause メソッドは、メディア項目の再生を一時停止します。

戻り値

このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれますが、これらに限定されません。

リターンコード 説明
S_OK
メソッドは成功しました。

解説(Remarks)

ファイルが一時停止されているとき、Windows Media Player はオーディオデバイスなどのシステムリソースを解放しません。

ライブストリームなど、一部のメディアの種類は一時停止できません。特定のメディアの種類を一時停止できるかどうかを判定するには、IWMPControls::get_isAvailable メソッドを呼び出し、BSTR 値 "pause" を渡します。

vtbl 11 HRESULT fastForward()

fastForward メソッドは、メディア項目を順方向に高速再生します。

戻り値

このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれますが、これらに限定されません。

リターンコード 説明
S_OK
メソッドは成功しました。

解説(Remarks)

fastForward メソッドは、クリップを通常の 5 倍の速度で再生します。fastForward の呼び出しは、IWMPSettings::put_rate メソッドで速度に 5.0 を指定することと同等です。その後速度が変更された場合、または IWMPControls::playIWMPControls::stop が呼び出された場合、Windows Media Player は早送りを停止します。

fastForward メソッドは、ライブ放送や一部のメディアの種類では機能しません。クリップを早送りできるかどうかを判定するには、IWMPControls::get_isAvailable メソッドを呼び出し、BSTR 値 "FastForward" を渡します。

vtbl 12 HRESULT fastReverse()

fastReverse メソッドは、メディア項目を逆方向に高速再生します。

戻り値

このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれますが、これらに限定されません。

リターンコード 説明
S_OK
メソッドは成功しました。

解説(Remarks)

fastReverse メソッドは、クリップを通常の 5 倍の速度で逆方向にスキャンし、ビデオファイルの場合はキーフレームのみを表示します。fastReverse の呼び出しは、IWMPSettings::put_rate メソッドで速度に -5.0 を指定することと同等です。その後速度が変更された場合、または IWMPControls::playIWMPControls::stop が呼び出された場合、Windows Media Player は高速逆再生を停止します。

項目がプレイリストの一部である場合、fastReverse は現在のトラックの先頭で停止します。たとえば、トラック 3 が fastReverse 中の場合、トラック 3 の先頭に到達しても、Windows Media Player はトラック 2 へは移動しません。fastReverse の呼び出しでは再生回数は加算されません。

fastReverse の実行中に IWMPControls::fastForward を呼び出すと、fastReverse は停止し、IWMPControls::fastForward が開始されます。

このメソッドは、ライブ放送や一部のデジタルメディアの種類では機能しません。クリップで高速逆再生を使用できるかどうかを判定するには、IWMPControls::get_isAvailable メソッドを呼び出し、BSTR 値 "FastReverse" を渡します。

vtbl 13 HRESULT get_currentPosition(DOUBLE* pdCurrentPosition)

get_currentPosition メソッドは、メディア項目内の現在の位置を先頭からの秒数で取得します。

pdCurrentPositionDOUBLE*inout現在の位置を格納する double へのポインター。

戻り値

このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれますが、これらに限定されません。

リターンコード 説明
S_OK
メソッドは成功しました。
vtbl 14 HRESULT put_currentPosition(DOUBLE dCurrentPosition)

put_currentPosition メソッドは、メディア項目内の現在の位置を先頭からの秒数で指定します。

dCurrentPositionDOUBLEin現在の位置を格納する double

戻り値

このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれますが、これらに限定されません。

リターンコード 説明
S_OK
メソッドは成功しました。
vtbl 15 HRESULT get_currentPositionString(LPWSTR* pbstrCurrentPosition)

get_currentPositionString メソッドは、メディア項目内の現在の位置を HH:MM:SS(時、分、秒)形式の BSTR として取得します。

pbstrCurrentPositionLPWSTR*inout現在の位置を格納する BSTR へのポインター。

戻り値

このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれますが、これらに限定されません。

リターンコード 説明
S_OK
メソッドは成功しました。

解説(Remarks)

メディア項目の長さが 1 時間未満の場合、現在の位置は MM:SS(分と秒)形式になります。

vtbl 16 HRESULT next()

next メソッドは、プレイリスト内の次の項目を現在の項目として設定します。

戻り値

このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれますが、これらに限定されません。

リターンコード 説明
S_OK
メソッドは成功しました。

解説(Remarks)

next が呼び出されたときにプレイリストが最後の項目にある場合、プレイリストの最初の項目が現在の項目になります。

サーバー側プレイリストの場合、このメソッドはクライアントプレイリストではなく、サーバー側プレイリスト内の次の項目にスキップします。

DVD の再生時には、このメソッドは再生シーケンス内の次の論理チャプターにスキップしますが、これはプレイリスト内の次のチャプターとは限りません。DVD の静止画を再生している場合、このメソッドは次の静止画にスキップします。

vtbl 17 HRESULT previous()

previous メソッドは、プレイリスト内の前の項目を現在の項目として設定します。

戻り値

このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれますが、これらに限定されません。

リターンコード 説明
S_OK
メソッドは成功しました。

解説(Remarks)

previous が呼び出されたときにプレイリストが最初の項目にある場合、プレイリストの最後の項目が現在の項目になります。

vtbl 18 HRESULT get_currentItem(IWMPMedia** ppIWMPMedia)

get_currentItem メソッドは、プレイリスト内の現在のメディア項目を取得します。

ppIWMPMediaIWMPMedia**outIWMPMedia インターフェイスへのポインターへのポインター。

戻り値

このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれますが、これらに限定されません。

リターンコード 説明
S_OK
メソッドは成功しました。

解説(Remarks)

このメソッドは、現在のプレイリスト内の項目に対してのみ機能します。

vtbl 19 HRESULT put_currentItem(IWMPMedia* pIWMPMedia)

put_currentItem メソッドは、現在のメディア項目を指定します。

pIWMPMediaIWMPMedia*inIWMPMedia インターフェイスへのポインター。

戻り値

このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれますが、これらに限定されません。

リターンコード 説明
S_OK
メソッドは成功しました。

解説(Remarks)

このメソッドは、プレイリスト内の項目に対してのみ機能します。保存されたメディア項目への参照を指定して put_currentItem を呼び出すことはサポートされていません。

vtbl 20 HRESULT get_currentMarker(INT* plMarker)

get_currentMarker メソッドは、現在のマーカー番号を取得します。

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

戻り値

このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれますが、これらに限定されません。

リターンコード 説明
S_OK
メソッドは成功しました。

解説(Remarks)

get_currentMarker メソッドは常に現在または直前のマーカーへのポインターを取得します。つまり、実際のファイル位置は、現在のマーカーの位置か、次のマーカーの手前のいずれかになります。マーカーは 1 から始まる番号が付けられているため、ファイルにマーカーがある場合は、IWMPControls::put_currentMarker を呼び出してマーカーに 0 を指定することで、現在の再生位置を 0 に変更できます。

現在のメディア項目が(IWMPCore::put_URL または IWMPCore::put_currentMedia を使用して)設定されるまで、get_currentMarker は 0 のマーカーを取得します。

vtbl 21 HRESULT put_currentMarker(INT lMarker)

put_currentMarker メソッドは、現在のマーカー番号を指定します。

lMarkerINTinマーカーを格納する long

戻り値

このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれますが、これらに限定されません。

リターンコード 説明
S_OK
メソッドは成功しました。

解説(Remarks)

put_currentMarker メソッドでマーカーを指定すると、そのマーカーから再生が開始されます。put_currentMarker でマーカーを指定する前に、IWMPMedia::get_markerCount を呼び出して、ファイルにマーカーがあるかどうか、およびマーカーがいくつあるかを確認してください。ファイルにマーカーがない場合、put_currentMarker で 0 以外のマーカーを指定するとエラーになります。IWMPMedia::get_markerCount で取得した数より大きい番号をマーカーに指定した場合もエラーになります。

現在のメディア項目が(IWMPCore::put_URL または IWMPCore::put_currentMedia を使用して)設定されるまで、get_currentMarker は 0 のマーカーを取得します。

vtbl 22 HRESULT playItem(IWMPMedia* pIWMPMedia)

playItem メソッドは、指定したメディア項目を再生します。

pIWMPMediaIWMPMedia*inIWMPMedia インターフェイスへのポインター。

戻り値

このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれますが、これらに限定されません。

リターンコード 説明
S_OK
メソッドは成功しました。

解説(Remarks)

メディア項目は、IWMPSettings::get_autoStart メソッドで取得される値に関係なく、自動的に読み込まれて再生されます。項目を自動的に再生せずに読み込むには、IWMPSettings::put_autoStart メソッドに FALSE に設定した VARIANT_BOOL を渡し、IWMPCore::put_URL で URL を指定します。その後、IWMPControls::play を呼び出して項目の再生を開始できます。

メモ

playItem は、IWMPCore::get_currentPlaylist から取得した項目に対してのみ機能します。保存されたメディア項目への参照を指定して playItem を呼び出すことはサポートされていません。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IWMPControls "{74C09E02-F828-11D2-A74B-00A0C905F36E}"
#usecom global IWMPControls IID_IWMPControls "{}"
#comfunc global IWMPControls_get_isAvailable            7 wstr,var
#comfunc global IWMPControls_play                       8
#comfunc global IWMPControls_stop                       9
#comfunc global IWMPControls_pause                      10
#comfunc global IWMPControls_fastForward                11
#comfunc global IWMPControls_fastReverse                12
#comfunc global IWMPControls_get_currentPosition        13 var
#comfunc global IWMPControls_put_currentPosition        14 double
#comfunc global IWMPControls_get_currentPositionString  15 var
#comfunc global IWMPControls_next                       16
#comfunc global IWMPControls_previous                   17
#comfunc global IWMPControls_get_currentItem            18 sptr
#comfunc global IWMPControls_put_currentItem            19 sptr
#comfunc global IWMPControls_get_currentMarker          20 var
#comfunc global IWMPControls_put_currentMarker          21 int
#comfunc global IWMPControls_playItem                   22 sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。
; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。