ISnapinHelp
COM公式ドキュメント
スナップインが HTML ヘルプのサポートを追加できるようにします。(ISnapinHelp)
メソッド 1
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
スナップインが、コンパイル済みの HTML ヘルプファイルを MMC のヘルプコレクションファイルに追加できるようにします。
| lpCompiledHelpFile | LPWSTR* | out | スナップイン用のコンパイル済みヘルプファイル(.chm)のパスを格納した、null 終端の Unicode 文字列のアドレスへのポインター。パスを指定する際は、ファイルを任意の場所に配置し、フルパス名を指定します。 |
戻り値
このメソッドは、次のいずれかの値を返すことがあります。
解説(Remarks)
MMC は、スナップインのヘルプファイルの場所を取得するために、このメソッドのスナップイン側の実装を呼び出します。MMC は、すべてのスナップインの HTML ヘルプファイルを MMC コンソールの HTML ヘルプコレクションファイルにマージします。
コレクションを表示すると、スナップインのヘルプファイルのトピック階層が目次に表示されます。
HTML ヘルプファイルをマージすることで、MMC は単一の統合された HTML ヘルプの目次、インデックス、および検索機能を作成します。ユーザーがメインの ヘルプ メニューで [Microsoft Management Console のヘルプ] をクリックすると、MMC は現在のコンソールファイル内のすべてのスナップインの HTML ヘルプファイルを含む、マージ済みのヘルプファイルを開きます。
lpCompiledHelpFile 文字列は、COM API 関数 CoTaskMemAlloc(またはそれと同等のもの)で割り当ててください。解放は MMC が行います。
例
STDMETHODIMP CComponentData::GetHelpTopic( LPOLESTR *lpCompiledFile )
{
LPOLESTR lpHelpFile;
if ( !lpCompiledFile )
return E_POINTER; // invalid argument
lpHelpFile = (LPOLESTR) CoTaskMemAlloc( MAX_PATH * sizeof(WCHAR) );
if ( !lpHelpFile )
{
return E_OUTOFMEMORY;
}
ExpandEnvironmentStringsW( L"%SystemRoot%\\Help\\myhelpfile.chm", lpHelpFile, MAX_PATH );
*lpCompiledHelpFile = lpHelpFile;
return S_OK;
}
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ISnapinHelp "{A6B15ACE-DF59-11D0-A7DD-00C04FD909DD}" #usecom global ISnapinHelp IID_ISnapinHelp "{}" #comfunc global ISnapinHelp_GetHelpTopic 3 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_ISnapinHelp "{A6B15ACE-DF59-11D0-A7DD-00C04FD909DD}" #usecom global ISnapinHelp IID_ISnapinHelp "{}" #comfunc global ISnapinHelp_GetHelpTopic 3 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。