Compartilhar via


Classe COMAdminCatalogObject

Representa itens em coleções no catálogo COM+. Use-o para recuperar e modificar propriedades expostas por um item em uma coleção.

Quando implementar

Essa classe é implementada pelo COM+.

Requisito Valor
Interfaces ICatalogObject

Quando usar

Use objetos criados a partir da classe COMAdminCatalogObject para modificar as propriedades dos itens contidos em coleções no catálogo COM+. Esses itens correspondem a itens mostrados dentro de pastas na árvore de console da ferramenta de administração dos Serviços de Componentes. As pastas na ferramenta de administração dos Serviços de Componentes correspondem a coleções no catálogo, que você pode representar usando objetos criados a partir da classe COMAdminCatalogCollection .

Nem todas as coleções e itens expostos por meio de COMAdminCatalogCollection e COMAdminCatalogObject estão disponíveis na ferramenta de administração dos Serviços de Componentes.

Para obter informações sobre coleções específicas e suas propriedades, consulte Coleções de Administração COM+.

Para obter uma introdução à administração programática do COM+, consulte Automatizando a administração com+.

Comentários

Você não pode criar diretamente um objeto COMAdminCatalogObject . Para usar os métodos deste objeto, você deve criar um objeto COMAdminCatalog , obter uma referência a ICOMAdminCatalog e, em seguida, usar ICOMAdminCatalog::GetCollection para obter uma referência a uma interface ICatalogCollection que representa uma coleção de nível superior ou usar ICatalogCollection::GetCollection para acessar coleções que não são de nível superior.

Depois de fazer referência à interface ICatalogCollection da coleção na qual você está interessado, chame ICatalogCollection::P opulate para preencher a coleção com todos os seus itens. Itere em cada um dos itens da coleção chamando ICatalogCollection::get_Item para obter uma referência a cada interface ICatalogObject . Ao encontrar o item de interesse, você pode modificar as propriedades do item e sair da iteração. Se você fizer alterações em qualquer item em uma coleção, deverá chamar ICatalogCollection::SaveChanges para salvar as alterações no catálogo COM+.

Isso é mostrado no exemplo a seguir, em que "TopCollection" deve ser substituído pelo nome de uma das coleções de administração COM+ de nível superior; "ItemName" deve ser substituído pelo nome do item no qual você está interessado; "PropertyName" deve ser substituído pelo nome da propriedade que você está modificando no item; e varNewProp devem ser substituídos por uma VARIANT que contenha o novo valor da propriedade.

// 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);


Para usar essa classe do Microsoft Visual Basic, adicione uma referência à Biblioteca de Tipos de Administração COM+. Um objeto COMAdminCatalogCollection pode ser criado chamando GetCollection em um objeto COMAdminCatalog ou COMAdminCatalogCollection .

Chame o método Populate do objeto COMAdminCatalogCollection para preencher a coleção com todos os seus itens. Iterar em cada um dos itens da coleção. Ao encontrar o item de interesse, você pode modificar as propriedades do item e sair da iteração. Se você fizer alterações em qualquer item em uma coleção, deverá chamar o método SaveChanges do objeto COMAdminCatalogCollection para salvar as alterações no catálogo COM+.

Isso é mostrado no exemplo a seguir, em que "TopCollection" deve ser substituído pelo nome de uma das coleções de administração COM+ de nível superior; "ItemName" deve ser substituído pelo nome do item no qual você está interessado; "PropertyName" deve ser substituído pelo nome da propriedade que você está modificando no item; e NewPropValue devem ser substituídos pelo novo valor da propriedade .

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

Requisitos

Requisito Valor
Cliente mínimo com suporte
Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte
Windows 2000 Server [somente aplicativos da área de trabalho]
Cabeçalho
ComAdmin.h
IDL
ComAdmin.Idl

Confira também

COMAdminCatalog

COMAdminCatalogCollection

ICatalogObject