CLASSE COMAdminCatalogObject

Représente les éléments des collections dans le catalogue COM+. Utilisez-le pour récupérer et modifier les propriétés exposées par un élément d’une collection.

Quand implémenter

Cette classe est implémentée par COM+.

Condition requise Valeur
Interfaces ICatalogObject

Quand l’utiliser

Utilisez des objets créés à partir de la classe COMAdminCatalogObject pour modifier les propriétés des éléments contenus dans les collections du catalogue COM+. Ces éléments correspondent aux éléments affichés dans les dossiers de l’arborescence de console de l’outil d’administration Component Services. Les dossiers de l’outil d’administration Component Services correspondent aux collections du catalogue, que vous pouvez représenter à l’aide d’objets créés à partir de la classe COMAdminCatalogCollection .

Toutes les collections et éléments exposés via COMAdminCatalogCollection et COMAdminCatalogObject ne sont pas disponibles dans l’outil d’administration Component Services.

Pour plus d’informations sur des collections spécifiques et leurs propriétés, consultez Collections d’administration COM+.

Pour une présentation de l’administration programmatique de COM+, consultez Automatisation de l’administration COM+.

Notes

Vous ne pouvez pas créer directement un objet COMAdminCatalogObject . Pour utiliser les méthodes de cet objet, vous devez créer un objet COMAdminCatalog , obtenir une référence à ICOMAdminCatalog, puis utiliser ICOMAdminCatalog::GetCollection pour obtenir une référence à une interface ICatalogCollection qui représente une collection de niveau supérieur ou utiliser ICatalogCollection::GetCollection pour accéder à des collections qui ne sont pas de niveau supérieur.

Une fois que vous avez une référence à l’interface ICatalogCollection de la collection qui vous intéresse, appelez ICatalogCollection::P opulate pour remplir la collection avec tous ses éléments. Effectuez une itération dans chacun des éléments de la collection en appelant ICatalogCollection::get_Item pour obtenir une référence à chaque interface ICatalogObject . Lorsque vous trouvez l’élément qui vous intéresse, vous pouvez modifier les propriétés de l’élément et quitter l’itération. Si vous apportez des modifications à des éléments d’une collection, vous devez appeler ICatalogCollection::SaveChanges pour enregistrer les modifications apportées au catalogue COM+.

Cela est illustré dans l’exemple suivant, où « TopCollection » doit être remplacé par le nom de l’une des collections d’administration COM+ de niveau supérieur ; « ItemName » doit être remplacé par le nom de l’élément qui vous intéresse ; « PropertyName » doit être remplacé par le nom de la propriété que vous modifiez dans l’élément ; et varNewProp doivent être remplacés par un VARIANT qui contient la nouvelle valeur de la propriété .

// Convert ItemName to a BSTR.
bstrItemName = SysAllocString(L"ItemName");
HRESULT hr = CoCreateInstance(CLSID_COMAdminCatalog, NULL, 
  CLSCTX_INPROC_SERVER, IID_IUnknown, (void**)&pUnknown);
if (FAILED(hr)) exit(0);  // Replace with specific error handling.
hr = pUnknown->QueryInterface(IID_ICOMAdminCatalog, 
  (void**)&pCatalog); 
if (FAILED(hr)) exit(0);  // Replace with specific error handling.
hr = pCatalog->GetCollection(L"TopCollection", 
  (IDispatch**)&pTopColl);
if (FAILED(hr)) exit(0);  // Replace with specific error handling.
// Populate the TopCollection collection.
hr = pTopColl->Populate();
if (FAILED(hr)) exit(0);  // Replace with specific error handling.
// Get the number of items in the collection.
hr = pTopColl->get_Count(&lCount);
if (FAILED(hr)) exit(0);  // Replace with specific error handling.
VARIANT varName;
VariantInit(&varName);
// Iterate through each item in the collection.
for (LONG lIdx = 0; lIdx < lCount; lIdx++) {
    hr = pTopColl->get_Item(lIdx, (IDispatch**)&pItem);
    if (FAILED(hr)) exit(0);  // Replace with specific error handling.
    hr = pItem->get_Name(&varName);
    if (FAILED(hr)) exit(0);  // Replace with specific error handling.
    // Compare the item name to bstrItemName.
    hr = VarBstrCmp(varName.bstrVal, bstrItemName, 1024L, NULL);
    if (FAILED(hr)) exit(0);  // Replace with specific error handling.
    if (VARCMP_EQ == hr) {  // The strings are equal.
        // Use the put_Value method to modify properties of the item.
        hr = pItem->put_Value(L"PropertyName", varNewProp);
        if (FAILED(hr)) exit(0);  // Replace with specific error handling.
        break;  // Exit the iteration.
    }
}
hr = pTopColl->SaveChanges(&lNum);
if (FAILED(hr)) exit(0);  // Replace with specific error handling.
SysFreeString(bstrItemName);


Pour utiliser cette classe à partir de Microsoft Visual Basic, ajoutez une référence à la bibliothèque de types com+ Administration. Un objet COMAdminCatalogCollection peut être créé en appelant GetCollection sur un objet COMAdminCatalog ou COMAdminCatalogCollection .

Appelez la méthode Populate de l’objet COMAdminCatalogCollection pour remplir la collection avec tous ses éléments. Itérer au sein de chacun des éléments de la collection. Lorsque vous trouvez l’élément qui vous intéresse, vous pouvez modifier les propriétés de l’élément et quitter l’itération. Si vous apportez des modifications à des éléments d’une collection, vous devez appeler la méthode SaveChanges de l’objet COMAdminCatalogCollection pour enregistrer les modifications apportées au catalogue COM+.

Cela est illustré dans l’exemple suivant, où « TopCollection » doit être remplacé par le nom de l’une des collections d’administration COM+ de niveau supérieur ; « ItemName » doit être remplacé par le nom de l’élément qui vous intéresse ; « PropertyName » doit être remplacé par le nom de la propriété que vous modifiez dans l’élément ; et NewPropValue doivent être remplacés par la nouvelle valeur de la propriété .

Dim objCatalog As COMAdmin.COMAdminCatalog
Set objCatalog = CreateObject("COMAdmin.COMAdminCatalog")
Dim objTopCollection As COMAdmin.COMAdminCatalogCollection
Set objTopCollection = objCatalog.GetCollection("TopCollection")
objTopCollection.Populate
Dim objItem As COMAdmin.COMAdminCatalogObject
For Each objItem in objTopCollection
    If objItem.Name = "ItemName" Then
        objItem.Value("PropertyName") = NewPropValue
        Exit For
    End If
Next
objAppCollection.SaveChanges

Configuration requise

Condition requise Valeur
Client minimal pris en charge
Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge
Windows 2000 Server [applications de bureau uniquement]
En-tête
ComAdmin.h
IDL
ComAdmin.Idl

Voir aussi

COMAdminCatalog

COMAdminCatalogCollection

ICatalogObject