IExtendTaskPad
COM公式ドキュメント
IExtendTaskPad インターフェイスは MMC 1.1 で導入されました。
メソッド 6
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
IExtendTaskPad::TaskNotify メソッドを使用すると、タスクが拡張されたときに MMC がスナップインに通知できます。タスクパッドがリストビュータスクパッドの場合、MMC はリストビューボタンが拡張されたときにも IExtendTaskPad::TaskNotify を呼び出します。
| pdo | IDataObject* | in | タスクパッドを所有するスコープ項目のデータオブジェクトへのポインター。スナップインがタスクパッドを表示する項目を所有している場合、pdo はその項目へのポインターです。別のスナップインのタスクパッドを拡張している場合、pdo はそのタスクパッドを所有するスナップイン内の項目へのポインターです。 |
| arg | VARIANT* | in | タスクパッド上の CIC コントロールから返される情報を格納する VARIANT 構造体へのポインター。 MMC タスクパッドテンプレートを使用するタスクパッド MMC 提供のタスクパッドの場合、VARIANT 構造体にはクリックされたタスクパッドのタスクまたはリストビューボタンのコマンド ID が格納されます。 vt フィールドは VT_I4 で、lVal フィールドにはクリックされたタスクパッドのタスクまたはリストビューボタンのコマンド ID が格納されます。リストビューボタンはリストビュータスクパッドにのみ適用されます。 タスクのコマンド ID は MMC_TASK 構造体の nCommandID メンバーで指定されます。この構造体は、タスクパッドのセットアップ時に MMC がそのタスクの情報を取得する際に呼び出す IEnumTASK::Next メソッドで渡されます。 リストビューボタンは MMC_LISTPAD_INFO 構造体の szButtonText メンバーで指定されるボタンです。この構造体は、MMC がリストビュータスクパッドをセットアップする際に呼び出す IExtendTaskPad::GetListPadInfo メソッドで渡されます。リストビューボタンのコマンド ID は MMC_LISTPAD_INFO の nCommandID メンバーで指定されます。 カスタム HTML ページを使用するタスクパッド カスタムタスクパッドの場合、VARIANT 構造体には、カスタム HTML ページ上のスクリプトが CIC オブジェクトの TaskNotify メソッドを通じて渡したい任意のデータを格納できます。 |
| param2 | VARIANT* | in | 通知に固有の追加情報を含む VARIANT へのポインタを指定する。 |
戻り値
このメソッドは次の値のいずれかを返します。
解説(Remarks)
スナップインは pdo ポインターを使用してタスクパッドを所有するスコープ項目を識別でき、次に arg パラメーターで返される VARIANT 値によってタスクを識別できます。タスクパッドがリストビュータスクパッドの場合、スナップインは IResultData インターフェイスを使用して、結果リスト内で選択された項目(複数選択がサポートされている場合は複数の項目)を識別できます。このデータに基づいて、スナップインは適切なオブジェクトに対して適切なアクションを実行できます。
リストビュータスクパッドでタスクパッドのリストビューボタンがクリックされた場合、スナップインは arg パラメーターで返される VARIANT 値によって、その特定のタスクパッドのボタンを識別できます。
カスタムタスクパッドは、arg および param パラメーターで送信すべきと判断した任意の値を渡すことができます。
IExtendTaskPad::EnumTasks メソッドを使用すると、MMC はスナップインのタスクを格納するオブジェクトの IEnumTASK インターフェイスへのポインターを取得できます。
| pdo | IDataObject* | in | タスクパッドを所有するスコープ項目のデータオブジェクトへのポインター。 |
| szTaskGroup | LPWSTR | in | タスクパッドを識別するグループ名を格納する null 終端文字列へのポインター。グループ名は、MMC がタスクパッドを表示するために IComponent::GetResultViewType を呼び出すときに ppViewType パラメーターで渡される文字列のハッシュ (#) の後に続く文字列です。グループ名が指定されていない場合、szTaskGroup は NULL 文字列です。 |
| ppEnumTASK | IEnumTASK** | out | スナップインのタスクを格納するオブジェクトの IEnumTASK インターフェイスのアドレスへのポインター。 |
戻り値
このメソッドは次の値のいずれかを返します。
解説(Remarks)
MMC は、スナップインのタスクパッドが表示されるたびにこのメソッドを呼び出します。また、スナップインが別のスナップインのタスクパッドを拡張している場合、MMC はそのスナップインの IEnumTASK インターフェイスへのポインターを取得するためにこのメソッドを呼び出します。
IExtendTaskPad::GetTitle メソッドを使用すると、MMC は MMC タスクパッドテンプレートを使用するタスクパッドに表示するタスクパッドのタイトルテキストを取得できます。
| pszGroup | LPWSTR | in | タスクパッドを識別するグループ名を格納する null 終端文字列へのポインター。グループ名は、MMC がタスクパッドを表示するために IComponent::GetResultViewType を呼び出すときに ppViewType パラメーターで渡される文字列のハッシュ (#) の後に続く文字列です。グループ名が指定されていない場合、pszGroup は NULL 文字列です。 |
| pszTitle | LPWSTR* | out | pszGroup で指定されたタスクパッドのタイトルを格納する null 終端文字列のアドレスへのポインター。このテキストはタスクパッド全体のタイトルとしてタスクパッドの上部に表示されます。pszTitle が NULL 文字列を指している場合、タイトルは表示されません。 |
戻り値
このメソッドは次の値のいずれかを返します。
解説(Remarks)
pszTitle 文字列は COM API 関数 CoTaskMemAlloc(または同等の関数)で割り当ててください。解放は MMC が行います。
IExtendTaskPad::GetDescriptiveText メソッドを使用すると、MMC は MMC タスクパッドテンプレートを使用するタスクパッドに表示するタスクパッドの説明テキストを取得できます。
| pszGroup | LPWSTR | in | タスクパッドを識別するグループ名を格納する null 終端文字列へのポインター。グループ名は、MMC がタスクパッドを表示するために IComponent::GetResultViewType を呼び出すときに ppViewType パラメーターで渡される文字列のハッシュ (#) の後に続く文字列です。グループ名が指定されていない場合、szGroup は NULL 文字列です。 |
| pszDescriptiveText | LPWSTR* | out | pszGroup で指定されたタスクパッドの説明テキストを格納する null 終端文字列のアドレスへのポインター。このテキストはタスクパッド全体のタイトルの下、タスクパッドの上部に表示されます。このテキストは、サブタイトルや操作の指示(たとえば「実行するアクションをクリックしてください。」)として機能するフレーズにできます。 pszDescriptiveText が NULL 文字列を指している場合、説明テキストは表示されません。 |
戻り値
このメソッドは次の値のいずれかを返します。
解説(Remarks)
pszDescriptiveText 文字列は COM API 関数 CoTaskMemAlloc(または同等の関数)で割り当ててください。解放は MMC が行います。
IExtendTaskPad::GetBackground メソッドを使用すると、MMC は MMC タスクパッドテンプレートを使用するタスクパッドに表示するタスクパッドの背景画像を取得できます。
| pszGroup | LPWSTR | in | タスクパッドを識別するグループ名を格納する null 終端文字列へのポインター。グループ名は、MMC がタスクパッドを表示するために IComponent::GetResultViewType を呼び出すときに ppViewType パラメーターで渡される文字列のハッシュ (#) の後に続く文字列です。グループ名が指定されていない場合、pszGroup は NULL 文字列です。 |
| pTDO | MMC_TASK_DISPLAY_OBJECT* | out | MMC_TASK_DISPLAY_OBJECT 構造体へのポインター。スナップインは、pszGroup で指定されたタスクパッドの背景として表示する画像を指定するために、この構造体を設定する必要があります。 呼び出し元(MMC)が MMC_TASK_DISPLAY_OBJECT 構造体のメモリを割り当てることに注意してください。 |
戻り値
このメソッドは次の値のいずれかを返します。
解説(Remarks)
pTDO パラメーターで指定された MMC_TASK_DISPLAY_BITMAP または MMC_TASK_DISPLAY_SYMBOL 構造体内の文字列は、COM API 関数 CoTaskMemAlloc(または同等の関数)で割り当ててください。解放は MMC が行います。
IExtendTaskPad::GetListPadInfo メソッドはリストビュータスクパッドでのみ使用されます。
| pszGroup | LPWSTR | in | タスクパッドを識別するグループ名を格納する null 終端文字列へのポインター。グループ名は、MMC がタスクパッドを表示するために IComponent::GetResultViewType を呼び出すときに ppViewType パラメーターで渡される文字列のハッシュ (#) の後に続く文字列です。グループ名が指定されていない場合、szGroup は NULL 文字列です。 |
| lpListPadInfo | MMC_LISTPAD_INFO* | out | MMC_LISTPAD_INFO 構造体へのポインター。スナップインは、リストコントロールのタイトルテキスト、省略可能なボタンのテキスト、およびその省略可能なボタンがクリックされたときに IExtendTaskPad::TaskNotify に渡されるコマンド ID を、この構造体に設定する必要があります。 呼び出し元(MMC)が MMC_LISTPAD_INFO 構造体のメモリを割り当てることに注意してください。 |
戻り値
このメソッドは次の値のいずれかを返します。
解説(Remarks)
スナップインがリストビュータスクパッドでない場合、MMC はこのメソッドを呼び出しません。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IExtendTaskPad "{8DEE6511-554D-11D1-9FEA-00600832DB4A}" #usecom global IExtendTaskPad IID_IExtendTaskPad "{}" #comfunc global IExtendTaskPad_TaskNotify 3 sptr,var,var #comfunc global IExtendTaskPad_EnumTasks 4 sptr,wstr,sptr #comfunc global IExtendTaskPad_GetTitle 5 wstr,var #comfunc global IExtendTaskPad_GetDescriptiveText 6 wstr,var #comfunc global IExtendTaskPad_GetBackground 7 wstr,var #comfunc global IExtendTaskPad_GetListPadInfo 8 wstr,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IExtendTaskPad "{8DEE6511-554D-11D1-9FEA-00600832DB4A}" #usecom global IExtendTaskPad IID_IExtendTaskPad "{}" #comfunc global IExtendTaskPad_TaskNotify 3 sptr,sptr,sptr #comfunc global IExtendTaskPad_EnumTasks 4 sptr,wstr,sptr #comfunc global IExtendTaskPad_GetTitle 5 wstr,sptr #comfunc global IExtendTaskPad_GetDescriptiveText 6 wstr,sptr #comfunc global IExtendTaskPad_GetBackground 7 wstr,sptr #comfunc global IExtendTaskPad_GetListPadInfo 8 wstr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。