IWMPPluginUI
COM公式ドキュメント
IWMPPluginUI インターフェイスは、Windows Media Player への接続を管理します。
メソッド 7
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
SetCore メソッドは、プラグインがコア Windows Media Player API にアクセスできるようにするために Windows Media Player によって呼び出されます。
| pCore | IWMPCore* | in | IWMPCore インターフェイスへのポインター。 |
戻り値
このメソッドは HRESULT を返します。
解説(Remarks)
このメソッドは、プラグインが IWMPCore インターフェイスへのポインターを設定または解放できるようにするために Windows Media Player によって呼び出されます。pCore が NULL の場合、プラグインはシャットダウンされる状態にあり、コアへの格納済みの参照はすべて解放する必要があります。
このメソッドは、Windows Media Player がプロパティ ページを表示する目的でプラグインをインスタンス化するときには呼び出されません。したがって、このメソッドは、プラグインが有効化され、Windows Media Player が通常どおりロードしたときにのみ呼び出されるエントリ ポイントとして使用できます。
Create メソッドは、プラグインのユーザー インターフェイスをインスタンス化するために Windows Media Player によって呼び出されます。このメソッドには、プラグイン ウィンドウの親ウィンドウへのハンドルが渡されます。新しく作成されたウィンドウへのハンドルが、呼び出し元のメソッドに返されます。
| hwndParent | HWND | in | プラグイン ウィンドウの親ウィンドウへの HWND ハンドル。 |
| phwndWindow | HWND* | inout | コンテンツが埋め込まれた後の、プラグイン ウィンドウへの HWND ハンドルへのポインター。 |
戻り値
このメソッドは HRESULT を返します。
解説(Remarks)
このメソッドは、バックグラウンド タイプを除くすべてのユーザー インターフェイス プラグイン タイプに対して Windows Media Player によって呼び出されます。
Windows Media Player 10 Mobile: このメソッドはサポートされていません。
Destroy メソッドは、プラグインのユーザー インターフェイスをシャットダウンするために Windows Media Player によって呼び出されます。
戻り値
このメソッドは HRESULT を返します。
解説(Remarks)
このメソッドは、バックグラウンド タイプを除くすべてのユーザー インターフェイス プラグイン タイプに対して Windows Media Player によって呼び出されます。
Windows Media Player 10 Mobile: このメソッドはサポートされていません。
DisplayPropertyPage メソッドは、プラグインにプロパティ ページを表示するよう要求するために Windows Media Player によって呼び出されます。このメソッドには、プラグインのプロパティ ページ ダイアログ ボックスの親ウィンドウへのハンドルが渡されます。
| hwndParent | HWND | in | プロパティ ページ ダイアログ ボックスの親ウィンドウへの HWND ハンドル。 |
戻り値
このメソッドは HRESULT を返します。
解説(Remarks)
このメソッドは、プロパティ ページを提供するプラグインに対してのみ Windows Media Player によって呼び出されます。
Windows Media Player 10 Mobile: このメソッドはサポートされていません。
GetProperty メソッドは、プラグインから名前と値のプロパティのペアを取得するために Windows Media Player によって呼び出されます。
| pwszName | LPWSTR | in | プロパティの名前を含む WCHARNULL 終端文字列定数へのポインター。次のいずれかの値を含みます。
| ||||||||||||||||||||||||
| pvarProperty | VARIANT* | inout | プロパティの値を格納する VARIANT へのポインター。 |
戻り値
このメソッドは HRESULT を返します。
解説(Remarks)
Windows Media Player は、Windows レジストリを確認することでプラグインのタイプと機能を判別し、プラグインがサポートするプロパティのみを取得します。
ユーザーが別ウィンドウまたはバックグラウンドの UI プラグインを閉じようとした場合、またはこれらのタイプのプラグインがアクティブなときに Windows Media Player を閉じようとした場合、このメソッドは PLUGIN_MISC_QUERYDESTROY プロパティを指定して呼び出されます。ファイルの読み書きや、モーダル ダイアログ ボックスでのユーザー入力の待機など、中断できない操作をプラグインが実行中の場合は、このメソッドの out パラメーターに空でない値を設定してください。この値は、問題を示すためにユーザーに表示されます。Windows Media Player を閉じようとしているユーザーには、プラグインを無視してそのまま Player を閉じるオプションが提示されます。
プラグインを閉じる準備ができたら、out パラメーターに ""(空文字列)を設定してください。Windows Media Player がこのメソッドを呼び出し、out パラメーターに空の値を受け取ると、それ以上遅延することなくプラグインを閉じます。
このメソッドは、表示領域、設定領域、またはメタデータ領域のプラグインが閉じられるときには呼び出されません。これらのタイプのプラグインは Now Playing ペインに表示されるため、ユーザーが別のペインに切り替えたときなど、いつでも閉じられる状態でなければなりません。
Windows Media Player 10 Mobile: このメソッドはサポートされていません。
SetProperty メソッドは、プラグインに名前と値のプロパティのペアを設定するために Windows Media Player によって呼び出されます。
| pwszName | LPWSTR | in | プロパティの名前を含む WCHARNULL 終端文字列定数へのポインター。次のいずれかの値を含みます。
| ||||||||
| pvarProperty | VARIANT* | in | プロパティの新しい値を含む VARIANT へのポインター。 |
戻り値
このメソッドは HRESULT を返します。
解説(Remarks)
Windows Media Player は、Windows レジストリを確認することでプラグインのタイプと機能を判別し、プラグインがサポートするプロパティのみを指定します。
Media オブジェクトと Playlist オブジェクトは、IUnknown ポインターの配列としてプラグインに送信されます。プラグインは、これらのポインターに対して QueryInterface を呼び出すことで、IWMPMedia インターフェイスまたは IWMPPlaylist インターフェイスを取得できます。
Windows Media Player 10 Mobile: このメソッドはサポートされていません。
TranslateAccelerator メソッドは、プラグインがキーボード イベントをインターセプトして応答できるようにするために、Windows Media Player のメッセージ ループの一部として呼び出されます。
| lpmsg | MSG* | inout | プラグインが応答できる、Windows Media Player からのメッセージ情報を含む LPMSG 構造体。 |
戻り値
このメソッドは HRESULT を返します。
解説(Remarks)
プラグインは、特定のキーボード イベントを適切なハンドラー メソッドに転送するためのアクセラレータ テーブルを設定できます。プラグインがキーボード イベントに応答しないことを選択した場合は、S_FALSE を返す必要があります。
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_IWMPPluginUI "{4C5E8F9F-AD3E-4BF9-9753-FCD30D6D38DD}" #usecom global IWMPPluginUI IID_IWMPPluginUI "{}" #comfunc global IWMPPluginUI_SetCore 3 sptr #comfunc global IWMPPluginUI_Create 4 sptr,sptr #comfunc global IWMPPluginUI_Destroy 5 #comfunc global IWMPPluginUI_DisplayPropertyPage 6 sptr #comfunc global IWMPPluginUI_GetProperty 7 wstr,var #comfunc global IWMPPluginUI_SetProperty 8 wstr,var #comfunc global IWMPPluginUI_TranslateAccelerator 9 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IWMPPluginUI "{4C5E8F9F-AD3E-4BF9-9753-FCD30D6D38DD}" #usecom global IWMPPluginUI IID_IWMPPluginUI "{}" #comfunc global IWMPPluginUI_SetCore 3 sptr #comfunc global IWMPPluginUI_Create 4 sptr,sptr #comfunc global IWMPPluginUI_Destroy 5 #comfunc global IWMPPluginUI_DisplayPropertyPage 6 sptr #comfunc global IWMPPluginUI_GetProperty 7 wstr,sptr #comfunc global IWMPPluginUI_SetProperty 8 wstr,sptr #comfunc global IWMPPluginUI_TranslateAccelerator 9 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。