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 & 0) 或 0。
SIATTRIBFLAGS_OR (0x00000002)
0x00000002。 如果数组中有多个项,请使用按位 OR 来合并各个项的属性。 例如,如果数组包含两个项,其中一个项可以移动 (SFGAO_CANMOVE) ,而第二个项不能移动,则该方法返回 (1 |0) 或 1 表示该属性位。
SIATTRIBFLAGS_APPCOMPAT (0x00000003)
0x00000003。 直接从 Shell 数据源检索属性。 若要使用此值,Shell 项数组必须已初始化为 IShellFolder ,其内容指定为子 PIDL 数组。
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) |