共用方式為


IShellItemArray::GetPropertyStore 方法 (shobjidl_core.h)

取得屬性存放區。

語法

HRESULT GetPropertyStore(
  [in]  GETPROPERTYSTOREFLAGS flags,
  [in]  REFIID                riid,
  [out] void                  **ppv
);

參數

[in] flags

類型: GETPROPERTYSTOREFLAGS

其中一個 GETPROPERTYSTOREFLAGS 常數。

[in] riid

類型: REFIID

要擷取之物件類型的 IID。

[out] ppv

類型: void**

當這個方法傳回時,會包含riid中要求的介面指標。 這通常是 IPropertyStoreIPropertyStoreCapabilities

傳回值

類型: HRESULT

如果此方法成功,則會傳回 S_OK。 否則,它會傳回 HRESULT 錯誤碼。

備註

這個方法可用來取得只讀屬性存放區,以匯總從殼層項目陣列中的所有專案收集的屬性。

如果殼層項目陣列中有多個專案,則產生的屬性存放區會根據每個屬性所決定的一組規則,匯總每個專案的值。 在 CoerceToCanonicalValue 所討論的匯總之前,從屬性存放區讀取的值會強制轉型為標準形式。 呼叫 IPropertyStore::GetValue 的輸出會計算如下:

  • 單一值屬性遵循屬性描述架構中 匯總類型 字串所指定的規則。
    • 如果匯總類型為 「DateRange」,而屬性類型為 filetime,則會傳回VT_VECTOR |VT_FILETIME兩個值,如果值相同,則為VT_FILETIME值。
    • 如果匯總類型為 「First」,則傳回第一個非空白值。
    • 如果匯總類型為 「Sum」,則傳回總和。
    • 如果匯總類型為 「Average」,則會傳回所有非空白值的平均值。
    • 如果匯總類型為 「Minimum」,則傳回最小值。
    • 如果匯總類型為 「Union」,且屬性類型為字串,則傳回VT_VECTOR |VT_LPWSTR包含值的聯集。 未指定值的順序。
    • 如果匯總類型未指定、不相容或“Default”,如果陣列中的所有專案都相同,或用來指出某些專案之間的值不同,則會傳回單一值。 特殊值為 VT_VECTOR |VT_LPWSTR包含兩個字串:“Multiple” 和 “Values”。 呼叫應用程式應該藉由檢查VT_VECTOR來檢查此特殊值 |VT_LPWSTR如果 GetTypeFlags 指出屬性為單一值。
  • 多重值字串屬性會傳回其字串的交集。 未指定順序。
只有在所有專案都有實作 IPropertyStoreCapabilities 的屬性處理程式,且所有屬性存放區都表示它們不支援寫入屬性時,才會傳回 isPropertyWritable 的呼叫S_FALSE。

呼叫應用程式可能會藉由直接存取個別殼層專案及其屬性存放區,來達成其他匯總行為。 請參閱 IPropertyStore::GetCountIPropertyStore::GetAtGetPropertyStore

透過 IFileOperation API 支援寫入殼層項目的陣列。

規格需求

需求
最低支援的用戶端 Windows Vista [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2008 [僅限傳統型應用程式]
目標平台 Windows
標頭 shobjidl_core.h (包含 Shobjidl.h)