Win32 API 日本語リファレンス
ホームSystem.Mmc › IConsoleNameSpace2

IConsoleNameSpace2

COM
IID255f18cc-65db-11d1-a7dc-00c04fd8d565継承元IConsoleNameSpace自前メソッド開始 vtbl10

公式ドキュメント

IConsoleNameSpace2 インターフェイスは MMC 1.1 で導入されました。

メソッド 2

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 10 HRESULT Expand(INT_PTR hItem)

IConsoleNameSpace2::Expand メソッドを使用すると、スナップインはスコープ ペインで項目を目に見える形で展開することなく、名前空間内の項目を展開できます。

hItemINT_PTRin展開する項目へのハンドル。

戻り値

このメソッドは次のいずれかの値を返すことがあります。

解説(Remarks)

IConsoleNameSpace2::Expand は、指定した項目の子項目を列挙する目的でその項目を展開するために使用します。スコープ ペインに項目を子項目として挿入する前に、IConsoleNameSpace2::Expand を呼び出す必要があることに注意してください。

たとえば、スナップインが親項目の下の特定の位置(子項目リストの先頭など)に子項目を配置する必要がある場合、スナップインはこのメソッドを使用して項目を展開し、子項目を配置する正確な位置を見つけます。また、(以前の IConsoleNameSpace2::Expand の呼び出しや、スコープ ペインでユーザーがプラス記号をクリックすることによって)まだ展開されていない項目の子項目に対して IConsoleNameSpace2::GetChildItem を呼び出し、その子を列挙する目的でその項目を展開するために、このメソッドを使用することもできます。

IConsoleNameSpace2::Expand は、コンソールのスコープ ペインに表示されるツリー内の項目を目に見える形で展開することはありません。スコープ ペインで項目を目に見える形で展開または折りたたむには、スナップインは IConsole2::Expand を使用します。このメソッドは、その項目が以前に展開されていない場合に限り、MMCN_EXPAND 通知を IComponentData に送信します。

vtbl 11 HRESULT AddExtension(INT_PTR hItem, GUID* lpClsid)

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

hItemINT_PTRinlpClsid で指定されたスナップインで拡張する項目へのハンドル。
lpClsidGUID*inhItem で指定された項目の名前空間を拡張するスナップインの CLSID へのポインター。

戻り値

このメソッドは次のいずれかの値を返すことがあります。

解説(Remarks)

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

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

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

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

拡張スナップインが動的拡張としてのみ使用されることを意図している場合、スナップイン マネージャーの拡張ページで拡張可能なスナップインのボックスでプライマリ スナップインが選択されたときに、その拡張スナップインが利用可能な拡張のリスト ボックスに表示されないようにする必要があります。スナップイン マネージャーで拡張を非表示にするには、拡張したい項目のノード型を表すキーに "Dynamic Extensions" キーを追加します。次に、そのノード型を動的にのみ拡張するスナップインの 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();
}
出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IConsoleNameSpace2 "{255F18CC-65DB-11D1-A7DC-00C04FD8D565}"
#usecom global IConsoleNameSpace2 IID_IConsoleNameSpace2 "{}"
#comfunc global IConsoleNameSpace2_Expand        10 sptr
#comfunc global IConsoleNameSpace2_AddExtension  11 sptr,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。