PSCreatePropertyChangeArray 関数 (propsys.h)

IPropertyChange オブジェクトのセットのコンテナーを作成します。 このコンテナーを IFileOperation と共に使用して、一連のファイルに一連のプロパティ変更を適用できます。

構文

PSSTDAPI PSCreatePropertyChangeArray(
  [in, optional] const PROPERTYKEY *rgpropkey,
  [in, optional] const PKA_FLAGS   *rgflags,
  [in, optional] const PROPVARIANT *rgpropvar,
  [in]           UINT              cChanges,
  [in]           REFIID            riid,
  [out]          void              **ppv
);

パラメーター

[in, optional] rgpropkey

型: const PROPERTYKEY*

変更が格納されている特定のプロパティに名前を付ける PROPERTYKEY 構造体の配列へのポインター。 この値が NULL の場合、 cChanges は 0 である必要があります。

[in, optional] rgflags

型: const PKA_FLAGS*

PKA_FLAGS値の配列へのポインター。 この値が NULL の場合、 cChanges は 0 である必要があります。

[in, optional] rgpropvar

型: const PROPVARIANT*

PROPVARIANT 構造体の配列へのポインター。 この値が NULL の場合、 cChanges は 0 である必要があります。

[in] cChanges

型: UINT

適用する変更の数。 これは、各配列 rgpropkeyrgflagsrgpropvar の要素の数です。

[in] riid

型: REFIID

要求されたインターフェイスの ID への参照。

[out] ppv

型: void**

この関数が戻るときに、 riid で要求されたインターフェイス ポインターを格納します。 これは通常 、IPropertyChangeArray です

戻り値

型: HRESULT

この関数が成功すると、 S_OKが返されます。 そうでない場合は、HRESULT エラー コードを返します。

注釈

この関数は、 IPropertyChangeArray を実装するコンポーネント オブジェクト モデル (COM) オブジェクトを作成します。 このオブジェクトは、一連の IPropertyChange インターフェイスのコンテナーであり、 IFileOperation と共に使用して、一連のファイルに一連のプロパティ変更を適用できます。

PSCreatePropertyChangeArray を呼び出す前に、CoInitialize または OleInitialize を使用して COM を初期化する必要があります。 COM は、このオブジェクトの有効期間にわたって初期化されたままにする必要があります。 プロパティ変更配列は、シングルスレッド アパートメント (STA) で実行されます。

プロパティ変更配列は、パラメーターを使用して単純な変更を指定するか、さまざまな IPropertyChangeArray メソッドを使用して追加の変更を挿入または追加することによって初期化できます。

パラメーターは、インデックス値によって結び付けられます。 たとえば、プロパティ rgpropkey[0]の場合、rgflags[0] で指定された新しい値 rgpropvar[0] が適用されます。 cChanges パラメーターは、これらのセットの数を示します。 したがって、各配列内の要素の数は同じである必要があります。ARRAYSIZE(rgpropkey) = ARRAYSIZE(rgflags) = ARRAYSIZE(rgpropvar) = cChanges。

IFileOperation は、プロパティ変更配列内のすべての変更をファイルに同時に適用して、ファイルを複数回開かないようにします。

次の例は、より大きなプログラムの一部として含めるために、 PSCreatePropertyChangeArray を使用して Comment プロパティを "Fun" に設定し、 Rating を 1 つ以上のファイルで 4 に設定する方法を示しています。

// IFileOperation *pfo;
// Assume variable pfo has been initialized by calling SetOperationFlags, 
// ApplyPropertiesToItems, and SetProgressMessage as appropriate.
 
PROPVARIANT rgpropvar[2] = {0};

HRESULT hr = InitPropVariantFromString(L"Fun", &rgpropvar[0]);

if (SUCCEEDED(hr))
{
    hr = InitPropVariantFromUInt32(RATING_FOUR_STARS_SET, &rgpropvar[1]);

    if (SUCCEEDED(hr))
    {
        REFPROPERTYKEY rgkey[2] = {PKEY_Comment, PKEY_Rating};
        PKA_FLAGS rgflags[2] = {PKA_SET, PKA_SET};
        IPropertyChangeArray *pChangeArray;

        hr = PSCreatePropertyChangeArray(rgkey, rgflags, rgpropvar, 2, IID_PPV_ARGS(&pChangeArray));

        if (SUCCEEDED(hr))
        {
            hr = pfo->SetProperties(pChangeArray);

            if (SUCCEEDED(hr))
            {
                hr = pfo->PerformOperations();
            }
            pChangeArray->Release();
        }
    }
    ClearPropVariantArray(rgpropvar, ARRAYSIZE(rgpropvar));
}

要件

要件
サポートされている最小のクライアント WINDOWS XP と SP2、Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2003 SP1 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー propsys.h
Library Propsys.lib
[DLL] Propsys.dll (バージョン 6.0 以降)
再頒布可能パッケージ Windows デスクトップ検索 (WDS) 3.0

こちらもご覧ください

PSCreateSimplePropertyChange