ShellFolderItem.ExtendedProperty 方法

从项的属性集中获取属性的值。 可以按名称或属性集的格式标识符 (FMTID) 和属性标识符 (PID) 指定属性。

语法

retVal = ShellFolderItem.ExtendedProperty(
  sPropName
)

参数

sPropName [in]

类型: BSTR

一个指定 属性的 String 值。 有关详细信息,请参见“备注”部分。

返回值

类型: Variant*

此方法返回时,如果指定项存在,则包含 属性的值。 该值将具有完整类型,例如,日期以日期而不是字符串的形式返回。

如果属性有效但指定项不存在,则此方法返回零长度字符串,否则返回错误代码。

备注

有两种方法可以指定属性。 第一种是将属性的已知名称(如“Author”或“Date”)分配给 sPropName。 但是,每个属性都是组件对象模型 (COM) 属性集的成员,也可以通过指定其格式 ID (FMTID) 和属性 ID (PID) 来标识。 FMTID 是标识属性集的 GUID,PID 是标识属性集中特定属性的整数。

按其 FMTID/PID 值指定属性通常比使用其名称更高效。 若要将属性的 FMTID/PID 值与 ExtendedProperty 一起使用,必须将它们合并到 SCID 中。 SCID 是包含格式为“FMTID**PID”的 FMTID/PID 值的字符串,其中 FMTID 是属性集 GUID 的字符串形式。 例如,摘要信息属性集的 author 属性的 SCID 为“{F29F85E0-4FF9-1068-AB91-08002B27B3D9} 4”。

有关 Shell 当前支持的 FMTID 和 PID 的列表,请参阅 SHCOLUMNID

示例

此示例代码演示如何使用 ExtendedProperty 从Word文档中检索“Title”和“Author”属性。 将 ShellFolderItem 对象与该文件(在本示例中为 fiWordDoc )相关联后,通过将属性的名称传递给 ExtendedProperty 来检索其值。

...
Doc_Title=fiWordDoc.ExtendedProperty("DocTitle")
Doc_Author=fiWordDoc.ExtendedProperty("Author")
...

一种更快、更高效的方法是将 SCID 传递给 ExtendedProperty

...
FMTID_SummaryInfo="{F29F85E0-4FF9-1068-AB91-08002B27B3D9}"
PID_TITLE="2"
PID_AUTHOR="4"
SCID_TITLE=FMTID_SummaryInfo+" "+PID_TITLE
SCID_AUTHOR=FMTID_SummaryInfo+" "+PID_AUTHOR
Doc_Title=fiWordDoc.ExtendedProperty(SCID_TITLE)
Doc_Author=fiWordDoc.ExtendedProperty(SCID_AUTHOR)
...

以下示例演示了 JScript、VBScript 和 Visual Basic 中此方法的正确用法。

Jscript:

<script language="JScript">
    function fnFolderItem2ExtendedPropertyJ()
    {
        var objShell = new ActiveXObject("shell.application");
        var objFolder2;
        var ssfWINDOWS = 36;
        
        objFolder2 = objShell.NameSpace(ssfWINDOWS);
        if (objFolder2 != null)
        {
            var objFolderItem;
            
            objFolderItem = objFolder2.ParseName("NOTEPAD.EXE");
            if (objFolderItem != null)
            {
                var szReturn = "";
                
                szReturn = objFolderItem.ExtendedProperty("infotip");
                alert(szReturn);
            }
        }
    }
</script>

VBScript:

<script language="VBScript">
    function fnFolderItemExtendedPropertyVB()
        dim objShell
        
        set objShell = CreateObject("shell.application")
        if (not objShell is nothing) then
            dim objFolder2
            dim ssfWINDOWS
                
            ssfWINDOWS = 36
            set objFolder2 = objShell.NameSpace(ssfWINDOWS)
            if (not objFolder2 is nothing) then
                dim objFolderItem
                        
                set objFolderItem = objFolder2.Self
                if (not objFolderItem is nothing) then
                    dim szReturn
                    
                    szReturn = objFolderItem.ExtendedProperty("type")
                    alert(szReturn)
                end if
                set objFolderItem = nothing
            end if
            set objFolder2 = nothing
        end if
        set objShell = nothing
    end function
 </script>

Visual Basic:

Private Sub fnFolderItem2ExtendedPropertyVB()
    Dim objShell   As Shell
    Dim objFolder2 As Folder2
    Dim ssfWINDOWS As Long
    
    ssfWINDOWS = 36
    Set objShell = New Shell
    Set objFolder2 = objShell.NameSpace(ssfWINDOWS)
        If (Not objFolder2 Is Nothing) Then
            Dim objFolderItem2 As Object
            
            Set objFolderItem2 = objFolder2.ParseName("NOTEPAD.EXE")
                If (Not objFolderItem2 Is Nothing) Then
                    Dim szReturn As String
                    
                    szReturn = objFolderItem2.ExtendedProperty("size")
                    Debug.Print szReturn
                Else
                    'FolderItem object returned nothing.
                End If
            Set objFolderItem2 = Nothing
        Else
            'Folder object returned nothing.
        End If
    Set objFolder2 = Nothing
    Set objShell = Nothing
End Sub

要求

要求
最低受支持的客户端
Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器
Windows 2000 Server [仅限桌面应用]
标头
Shldisp.h
IDL
Shldisp.idl
DLL
Shell32.dll (5.0 或更高版本)