IShellItemArray::GetAttributes 方法 (shobjidl_core.h)

取得 IShellItemArray 中包含的專案集屬性。 如果數位包含多個專案,這個方法所擷取的屬性不是單一項目的屬性,而是所有專案之所有要求屬性的邏輯組合。

語法

HRESULT GetAttributes(
  [in]  SIATTRIBFLAGS AttribFlags,
  [in]  SFGAOF        sfgaoMask,
  [out] SFGAOF        *psfgaoAttribs
);

參數

[in] AttribFlags

類型: SIATTRIBFLAGS

如果陣列包含單一專案,這個方法會提供與 GetAttributes 相同的結果。 不過,如果數位包含多個專案,則所有專案的屬性集都會合併成單一屬性集,並在 psfgaoAttribs 所指向的值中傳回。 此參數會採用下列其中一個值來定義決定最終屬性集的方式:

SIATTRIBFLAGS_AND (0x00000001)

0x00000001。 如果陣列中有多個專案,請使用位 AND 來合併專案之間的屬性。 例如,如果數位包含兩個專案,其中一個專案可以在 (SFGAO_CANMOVE) 移動,而第二個專案無法移動,則方法會針對該屬性位傳回 (1 & 1 & 0) 或 0。

SIATTRIBFLAGS_OR (0x00000002)

0x00000002。 如果陣列中有多個專案,請使用位 OR 將屬性合併到各個專案。 例如,如果數位包含兩個專案,其中一個專案可以在 (SFGAO_CANMOVE) 移動,而第二個專案無法移動,則方法會傳回 (1 |0) 或 1 表示該屬性位。

SIATTRIBFLAGS_APPCOMPAT (0x00000003)

0x00000003。 直接從Shell數據源擷取屬性。 若要使用這個值,Shell 專案數位必須已初始化為 IShellFolder ,其內容會指定為子 PIN 的陣列。

SIATTRIBFLAGS_MASK (0x00000003)

0x00000003。 SIATTRIBFLAGS_AND、SIATTRIBFLAGS_OR和SIATTRIBFLAGS_APPCOMPAT的遮罩。 呼叫端通常不會使用此值。

SIATTRIBFLAGS_ALLITEMS (0x00004000)

0x00004000。 Windows 7 和更新版本。 檢查陣列中的所有專案,以計算屬性。 請注意,這可能會導致大型數位的效能不佳,因此應該只在需要時才使用。 您傳遞此旗標的情況應該非常罕見。 如需詳細資訊,請參閱。

[in] sfgaoMask

類型: SFGAOF

遮罩,指定要要求哪些特定屬性。 一個或多個 SFGAO 值的位OR。

[out] psfgaoAttribs

類型: SFGAOF*

當這個方法成功傳回時,位圖會包含所要求屬性的值。

傳回值

類型: HRESULT

如果傳回的屬性完全符合 sfgaoMask 中要求的屬性,S_OK如果屬性不完全相符,則傳回S_FALSE否則傳回標準 COM 錯誤值。

備註

Shell 項目陣列會在判斷個別屬性之後快取它們。

當這個方法通過數位收集屬性資訊時,它通常會停止查看該值之後的特定屬性, 例如,如果已設定SIATTRIBFLAGS_AND旗標,在找不到在專案上設定屬性之後, (值為0) ,就不需要繼續檢查其他專案的屬性值,因為AND作業的結果一律為0。 因此,最後一組屬性通常是藉由只查看陣列中的前幾個項目來計算,這是取得最終值所需的所有專案。 如果您需要檢查陣列中的所有專案,請設定 SIATTRIBFLAGS_ALLITEMS 旗標。 不過,請注意,此方法的傳回速度可能會大幅變慢,因此請勿在沒有任何原因的情況下這麼做。

規格需求

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