Condividi tramite


Metodo ShellFolderItem.ExtendedProperty

Ottiene il valore di una proprietà dal set di proprietà di un elemento. La proprietà può essere specificata in base al nome o all'identificatore di formato (FMTID) del set di proprietà e all'identificatore di proprietà (PID).

Sintassi

retVal = ShellFolderItem.ExtendedProperty(
  sPropName
)

Parametri

sPropName [in]

Tipo: BSTR

Valore String che specifica la proprietà . Vedere la sezione Osservazioni per informazioni dettagliate.

Valore restituito

Tipo: Variant*

Quando termina, questo metodo contiene il valore della proprietà , se esistente per l'elemento specificato. Il valore avrà una digitazione completa, ad esempio le date vengono restituite come date, non come stringhe.

Questo metodo restituisce una stringa di lunghezza zero se la proprietà è valida ma non esiste per l'elemento specificato o un codice di errore in caso contrario.

Commenti

Esistono due modi per specificare una proprietà. Il primo consiste nell'assegnare il nome noto della proprietà, ad esempio "Author" o "Date", a sPropName. Tuttavia, ogni proprietà è un membro di un set di proprietà COM (Component Object Model) e può anche essere identificata specificando il relativo ID formato (FMTID) e l'ID proprietà (PID). Un FMTID è un GUID che identifica il set di proprietà e un PID è un numero intero che identifica una determinata proprietà all'interno del set di proprietà.

La specifica di una proprietà in base ai valori FMTID/PID è in genere più efficiente rispetto all'uso del nome. Per usare i valori FMTID/PID di una proprietà con ExtendedProperty, è necessario combinarli in uno SCID. Uno SCID è una stringa che contiene i valori FMTID/PID nel formato "FMTID**PID", dove FMTID è il formato stringa del GUID del set di proprietà. Ad esempio, lo SCID della proprietà author del set di informazioni di riepilogo è "{F29F85E0-4FF9-1068-AB91-08002B27B3D9} 4".

Per un elenco di FMTID e PID attualmente supportati dalla shell, vedere SHCOLUMNID.

Esempio

Questo codice di esempio illustra come usare ExtendedProperty per recuperare le proprietà "Title" e "Author" da un documento Word. Dopo aver associato l'oggetto ShellFolderItem al file fiWordDoc in questo esempio, recuperare il valore della proprietà passandone il nome a ExtendedProperty.

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

Un approccio più rapido ed efficiente consiste nel passare un SCID a 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)
...

Negli esempi seguenti viene illustrato l'utilizzo corretto di questo metodo per JScript, VBScript e 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

Requisiti

Requisito Valore
Client minimo supportato
Windows 2000 Professional [solo app desktop]
Server minimo supportato
Windows 2000 Server [solo app desktop]
Intestazione
Shldisp.h
IDL
Shldisp.idl
DLL
Shell32.dll (versione 5.0 o successiva)