COMAdminCatalogObject 类
表示 COM+ 目录中集合中的项。 使用它检索和修改由集合中的项公开的属性。
何时实现
此类由 COM+ 实现。
要求 | 值 |
---|---|
接口 | ICatalogObject |
何时使用
使用从 COMAdminCatalogObject 类创建的对象修改 COM+ 目录中集合中包含的项的属性。 这些项目对应于组件服务管理工具的控制台树中文件夹内显示的项。 组件服务管理工具中的文件夹对应于目录中的集合,可以使用从 COMAdminCatalogCollection 类创建的对象来表示这些集合。
并非所有通过 COMAdminCatalogCollection 和 COMAdminCatalogObject 公开的集合和项都可以在组件服务管理工具中使用。
有关特定集合及其属性的信息,请参阅 COM+ 管理集合。
有关 COM+ 编程管理的简介,请参阅 自动化 COM+ 管理。
备注
不能直接创建 COMAdminCatalogObject 对象。 若要使用此对象的方法,必须创建 COMAdminCatalog 对象,获取对 ICOMAdminCatalog 的引用,然后使用 ICOMAdminCatalog::GetCollection 获取对表示顶级集合的 ICatalogCollection 接口的引用,或使用 ICatalogCollection::GetCollection 访问不是顶级集合的集合。
对感兴趣的集合的 ICatalogCollection 接口进行引用后,调用 ICatalogCollection::P opulate 以使用集合的所有项填充集合。 通过调用 ICatalogCollection::get_Item 来循环访问集合中的每个项,以获取对每个 ICatalogObject 接口的引用。 找到感兴趣的项后,可以修改项的属性并退出迭代。 如果对集合中的任何项进行任何更改,则必须调用 ICatalogCollection::SaveChanges 以将更改保存到 COM+ 目录。
以下示例中显示了这一点,其中“TopCollection”必须替换为其中一个顶级 COM+ 管理集合的名称;“ItemName”必须替换为您感兴趣的项目的名称;“PropertyName”必须替换为在项目中修改的属性的名称;和 varNewProp 必须替换为包含属性的新值的 VARIANT。
// 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);
若要从 Microsoft Visual Basic 使用此类,请添加对 COM+ 管理员类型库的引用。 可以通过对 COMAdminCatalog 或 COMAdminCatalogCollection 对象调用 GetCollection 来创建 COMAdminCatalogCollection 对象。
调用 COMAdminCatalogCollection 对象的 Populate 方法以使用集合的所有项填充集合。 循环访问集合中的每个项。 找到感兴趣的项后,可以修改项的属性并退出迭代。 如果对集合中的任何项进行任何更改,则必须调用 COMAdminCatalogCollection 对象的 SaveChanges 方法,以将更改保存到 COM+ 目录。
以下示例中显示了这一点,其中“TopCollection”必须替换为其中一个顶级 COM+ 管理集合的名称;“ItemName”必须替换为您感兴趣的项目的名称;“PropertyName”必须替换为在项目中修改的属性的名称;和 NewPropValue 必须替换为 属性的新值。
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
要求
要求 | 值 |
---|---|
最低受支持的客户端 |
Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 |
Windows 2000 Server [仅限桌面应用] |
标头 |
|
IDL |
|