次の方法で共有


COMAdminCatalogObject クラス

COM+ カタログ内のコレクション内の項目を表します。 コレクション内の項目によって公開されるプロパティを取得および変更するために使用します。

実装時

このクラスは COM+ によって実装されます。

要件
インターフェイス ICatalogObject

使用する場合

COMAdminCatalogObject クラスから作成されたオブジェクトを使用して、COM+ カタログ内のコレクションに含まれる項目のプロパティを変更します。 これらの項目は、Component Services 管理ツールのコンソール ツリー内のフォルダー内に表示される項目に対応します。 コンポーネント サービス管理ツールのフォルダーは、カタログ内のコレクションに対応しています。このコレクションは、 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+ 管理 タイプ ライブラリへの参照を追加します。 COMAdminCatalogCollection オブジェクトは、COMAdminCatalog オブジェクトまたは COMAdminCatalogCollection オブジェクトで GetCollection呼び出すことによって作成できます。

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 [デスクトップ アプリのみ]
ヘッダー
ComAdmin.h
IDL
ComAdmin.Idl

関連項目

COMAdminCatalog

COMAdminCatalogCollection

ICatalogObject