다음을 통해 공유


ShellFolderItem.ExtendedProperty 메서드

항목의 속성 집합에서 속성 값을 가져옵니다. 속성은 이름 또는 속성 집합의 FMTID(형식 식별자) 및 PID(속성 식별자)로 지정할 수 있습니다.

구문

retVal = ShellFolderItem.ExtendedProperty(
  sPropName
)

매개 변수

sPropName [in]

형식: BSTR

속성을 지정하는 String 값입니다. 자세한 내용은 설명 단원을 참조 하십시오.

반환 값

형식: Variant*

이 메서드가 반환될 때 지정된 항목에 대해 속성이 있는 경우 속성 값이 포함됩니다. 값에는 전체 입력이 있습니다. 예를 들어 날짜는 문자열이 아닌 날짜로 반환됩니다.

이 메서드는 속성이 유효하지만 지정된 항목에 대해 존재하지 않거나 오류 코드가 없는 경우 길이가 0인 문자열을 반환합니다.

설명

속성을 지정하는 방법에는 두 가지가 있습니다. 첫 번째는 속성의 잘 알려진 이름(예: "Author" 또는 "Date")을 sPropName에 할당하는 것입니다. 그러나 각 속성은 COM(구성 요소 개체 모델) 속성 집합의 멤버이며 FMTID(형식 ID) 및 PID(속성 ID)를 지정하여 식별할 수도 있습니다. FMTID는 속성 집합을 식별하는 GUID이며 PID는 속성 집합 내의 특정 속성을 식별하는 정수입니다.

FMTID/PID 값으로 속성을 지정하는 것은 일반적으로 이름을 사용하는 것보다 더 효율적입니다. 속성의 FMTID/PID 값을 ExtendedProperty와 함께 사용하려면 SCID로 결합해야 합니다. SCID는 "FMTID**PID" 형식의 FMTID/PID 값을 포함하는 문자열입니다. 여기서 FMTID는 속성 집합 GUID의 문자열 형식입니다. 예를 들어 요약 정보 속성 집합의 author 속성의 SCID는 "{F29F85E0-4FF9-1068-AB91-08002B27B3D9} 4"입니다.

현재 셸에서 지원되는 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 이상)