次の方法で共有


ShellFolderItem.ExtendedProperty メソッド

アイテムのプロパティ セットからプロパティの値を取得します。 プロパティは、名前またはプロパティ セットの書式識別子 (FMTID) とプロパティ識別子 (PID) で指定できます。

構文

retVal = ShellFolderItem.ExtendedProperty(
  sPropName
)

パラメーター

sPropName [in]

種類: BSTR

プロパティを指定する String 値。 詳細については、「解説」を参照してください。

戻り値

型: Variant*

このメソッドから制御が戻るときに、指定した項目に対してプロパティが存在する場合は、 プロパティの値が格納されます。 値には完全な型指定が含まれます。たとえば、日付は文字列ではなく日付として返されます。

プロパティが有効だが、指定した項目に対して存在しない場合は長さ 0 の文字列を返し、それ以外の場合はエラー コードを返します。

解説

プロパティを指定するには、2 つの方法があります。 1 つ目は、プロパティの既知の名前 ("Author" や "Date" など) を sPropName に割り当てることです。 ただし、各プロパティはコンポーネント オブジェクト モデル (COM) プロパティ セットのメンバーであり、その形式 ID (FMTID) とプロパティ ID (PID) を指定して識別することもできます。 FMTID はプロパティ セットを識別する GUID であり、PID はプロパティ セット内の特定のプロパティを識別する整数です。

通常、FMTID/PID 値でプロパティを指定する方が、名前を使用するよりも効率的です。 ExtendedProperty でプロパティの FMTID/PID 値を使用するには、それらの値を SCID に結合する必要があります。 SCID は、"FMTID**PID" という形式の FMTID/PID 値を含む文字列です。ここで、FMTID はプロパティ セットの GUID の文字列形式です。 たとえば、概要情報プロパティ セットの author プロパティの SCID は、"{F29F85E0-4FF9-1068-AB91-08002B27B3D9} 4" です。

シェルで現在サポートされている FMTID と PID の一覧については、「 SHCOLUMNID」を参照してください。

このサンプル コードは、ExtendedProperty を使用して、Word ドキュメントから "Title" プロパティと "Author" プロパティを取得する方法を示しています。 この例の fiWordDoc というファイルに ShellFolderItem オブジェクトを関連付けたら、その名前を 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 以降)