IConsoleNameSpace2::AddExtension メソッド (mmc.h)

IConsoleNameSpace2::AddExtension メソッドを使用すると、スナップインは、選択した項目の名前空間を動的に拡張する拡張スナップインを追加できます。

構文

HRESULT AddExtension(
  [in] HSCOPEITEM hItem,
  [in] LPCLSID    lpClsid
);

パラメーター

[in] hItem

lpClsid で指定されたスナップインで拡張する項目へのハンドル。

[in] lpClsid

hItem で指定された項目の名前空間を拡張するスナップインの CLSID へのポインター。

戻り値

このメソッドは、これらの値のいずれかを返すことができます。

注釈

スナップインが AddExtension メソッドを呼び出すと、lpClsid で指定された名前空間拡張機能は、hItem で指定された項目の特定のインスタンスのみを拡張します。 その種類のその他の項目は影響を受けません。AddExtension の呼び出しは、スナップイン マネージャーを使用してスナップインに拡張機能を追加するのと同じではありません。 スナップイン マネージャーを使用してスナップインに拡張機能を追加すると、その種類のスナップインのすべてのインスタンスに拡張機能が追加されます。

さらに、AddExtension メソッドは、AddExtension 呼び出しを行うスナップインによって直接所有されているアイテムに対してのみ機能します。 たとえば、スナップインに名前空間に項目を追加する名前空間拡張機能がある場合、スナップインはそのアイテムを所有していないため、名前空間拡張機能によって提供されるアイテムに対して AddExtension を呼び出すことはできません。

動的名前空間拡張を追加する一般的な場所は、スナップインの IComponentData オブジェクトの MMCN_EXPAND 通知ハンドラーにあります。

メモ 拡張機能スナップインは名前空間拡張機能である必要があります。 さらに、拡張するスナップインと拡張機能スナップインの MMC レジストリ エントリを正しく設定する必要があります。
 
その他の種類の拡張機能 (コンテキスト メニュー、ツール バー、プロパティ シート、タスクパッドなど) を動的に追加するには、拡張する項目の新しいクリップボード形式CCF_MMC_DYNAMIC_EXTENSIONSをデータ オブジェクトに追加する必要があります。 CCF_MMC_DYNAMIC_EXTENSIONS形式では、SMMCDynamicExtensions 構造体が使用されます。 詳細については、「 動的な名前空間以外の拡張機能」を参照してください。

拡張機能スナップインが動的拡張機能としてのみ使用されることを意図している場合は、スナップイン マネージャーの拡張機能ページの [拡張可能] ボックスでプライマリ スナップインが選択されている場合、その拡張機能スナップインを [使用可能な拡張機能] リスト ボックスに表示しないでください。 スナップイン マネージャーで拡張機能を非表示にするには、拡張する項目のノードの種類を表すキーにキー "動的拡張" を追加します。 次に、ノードの種類のみを動的に拡張する必要があるスナップインの CLSID を新しいキーの値として配置します。

次のコード例では、 CLSID_Extension で指定された拡張機能スナップインを追加します。

IConsoleNameSpace2* pExtensions = NULL;
HRESULT hr = m_pConsole->QueryInterface(IID_IConsoleNameSpace2, reinterpret_cast<void**>(&pExtensions));
 
if (SUCCEEDED(hr))
{
    hr = pExtensions->AddExtension(m_pStaticRoot, const_cast<CLSID*>(&CLSID_Extension));
    ASSERT(hr == S_OK);
    pExtensions->Release();
}

要件

要件
サポートされている最小のクライアント Windows Vista
サポートされている最小のサーバー Windows Server 2008
対象プラットフォーム Windows
ヘッダー mmc.h
[DLL] Mmcndmgr.dll

こちらもご覧ください

IConsoleNameSpace2