Поделиться через


Метод ShellFolderItem.ExtendedProperty

Возвращает значение свойства из набора свойств элемента. Свойство можно указать либо по имени, либо по идентификатору формата (FMTID) набора свойств и идентификатору свойства (PID).

Синтаксис

retVal = ShellFolderItem.ExtendedProperty(
  sPropName
)

Параметры

sPropName [in]

Тип: BSTR

Строковое значение, указывающее свойство . Подробные сведения см. в разделе "Заметки".

Возвращаемое значение

Тип: Variant*

При возврате этим методом содержит значение свойства , если оно существует для указанного элемента. Значение будет иметь полную типизацию— например, даты возвращаются в виде дат, а не строк.

Этот метод возвращает строку нулевой длины, если свойство допустимо, но не существует для указанного элемента, или код ошибки в противном случае.

Комментарии

Указать свойство можно двумя способами. Первый — назначить известное имя свойства, например "Автор" или "Дата", свойству sPropName. Однако каждое свойство является членом набора свойств COM, и его также можно определить, указав идентификатор формата (FMTID) и идентификатор свойства (PID). FMTID — это GUID, который идентифицирует набор свойств, а PID — это целое число, идентифицирующее определенное свойство в наборе свойств.

Указание свойства по его значениям FMTID/PID обычно эффективнее, чем использование его имени. Чтобы использовать значения FMTID/PID свойства с ExtendedProperty, их необходимо объединить в SCID. SCID — это строка, содержащая значения FMTID/PID в формате "FMTID**PID", где FMTID — это строковая форма GUID набора свойств. Например, SCID свойства автора набора свойств сводной информации имеет значение "{F29F85E0-4FF9-1068-AB91-08002B27B3D9} 4".

Список FMTID и PID, которые в настоящее время поддерживаются оболочкой, см. в разделе SHCOLUMNID.

Примеры

В этом примере кода показано, как использовать ExtendedProperty для получения свойств Title и Author из документа Word. Получив объект 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 или более поздняя)