Partager via


Méthode IConsoleNameSpace2 ::AddExtension (mmc.h)

La méthode IConsoleNameSpace2 ::AddExtension permet au composant logiciel enfichable d’ajouter un composant logiciel enfichable d’extension qui étend dynamiquement l’espace de noms d’un élément sélectionné.

Syntaxe

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

Paramètres

[in] hItem

Handle de l’élément à étendre avec le composant logiciel enfichable spécifié par lpClsid.

[in] lpClsid

Pointeur vers le CLSID du composant logiciel enfichable qui étend l’espace de noms de l’élément spécifié par hItem.

Valeur retournée

Cette méthode peut retourner l’une de ces valeurs.

Remarques

Lorsqu’un composant logiciel enfichable appelle la méthode AddExtension, l’extension d’espace de noms spécifiée par lpClsid étend uniquement la instance spécifique de l’élément spécifié par hItem. Les autres éléments de ce type ne sont pas affectés : l’appel de AddExtension n’est pas identique à l’utilisation du gestionnaire de composant logiciel enfichable pour ajouter une extension à un composant logiciel enfichable. En utilisant le gestionnaire de composants logiciels enfichables pour ajouter une extension à un composant logiciel enfichable, l’extension est ajoutée à toutes les instances de composants logiciels enfichables de ce type.

En outre, la méthode AddExtension fonctionne uniquement pour les éléments qui appartiennent directement au composant logiciel enfichable qui effectue l’appel AddExtension. Par exemple, si un composant logiciel enfichable a une extension d’espace de noms qui ajoute un élément à son espace de noms, le composant logiciel enfichable ne peut pas appeler AddExtension pour l’élément fourni par l’extension d’espace de noms, car le composant logiciel enfichable ne possède pas cet élément.

Un emplacement courant pour ajouter des extensions d’espace de noms dynamiques se trouve dans le gestionnaire de notification MMCN_EXPAND de l’objet IComponentData du composant logiciel enfichable.

Note Le composant logiciel enfichable d’extension doit être une extension d’espace de noms. En outre, les entrées de Registre MMC pour le composant logiciel enfichable à étendre, ainsi que le composant logiciel enfichable d’extension, doivent être définies correctement.
 
Pour ajouter dynamiquement d’autres types d’extensions (tels que des menus contextuels, des barres d’outils, des feuilles de propriétés ou des taskpads), le composant logiciel enfichable doit ajouter le nouveau format du Presse-papiers CCF_MMC_DYNAMIC_EXTENSIONS à l’objet de données pour les éléments que vous souhaitez étendre. Le format CCF_MMC_DYNAMIC_EXTENSIONS utilise la structure SMMCDynamicExtensions . Pour plus d’informations, consultez Extensions dynamiques sans espace de noms.

Si un composant logiciel enfichable d’extension est destiné à être utilisé uniquement comme extension dynamique, ce composant logiciel enfichable d’extension ne doit pas être répertorié dans la zone de liste Extensions disponibles lorsque le composant logiciel enfichable principal est sélectionné dans la zone Composant logiciel enfichable qui peut être étendu sur la page extensions du gestionnaire de composants logiciels enfichables. Pour masquer une extension dans le gestionnaire de composants logiciels enfichables, ajoutez la clé « Extensions dynamiques » à la clé qui représente le type de nœud de l’élément que vous souhaitez étendre. Placez ensuite les CLSID des composants logiciels enfichables qui doivent uniquement étendre dynamiquement le type de nœud en tant que valeurs sous la nouvelle clé.

Exemples

L’exemple de code suivant ajoute le composant logiciel enfichable d’extension spécifié par 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();
}

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista
Serveur minimal pris en charge Windows Server 2008
Plateforme cible Windows
En-tête mmc.h
DLL Mmcndmgr.dll

Voir aussi

IConsoleNameSpace2