COMAdminCatalogObject
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
(フィールドなし)
公式ドキュメント
COM+ カタログ内のコレクションに含まれる項目を表します。コレクション内の項目が公開するプロパティを取得したり変更したりするために使用します。
解説(Remarks)
COMAdminCatalogObject オブジェクトを直接作成することはできません。このオブジェクトのメソッドを使用するには、COMAdminCatalog オブジェクトを作成して ICOMAdminCatalog への参照を取得し、ICOMAdminCatalog::GetCollection を使用して、最上位のコレクションを表す ICatalogCollection インターフェイスへの参照を取得します。最上位ではないコレクションにアクセスするには、ICatalogCollection::GetCollection を使用します。
対象とするコレクションの ICatalogCollection インターフェイスへの参照を取得したら、ICatalogCollection::Populate を呼び出して、コレクションにそのすべての項目を設定します。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+ Admin Type Library への参照を追加します。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
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp)