ShellFolderItem.ExtendedProperty 方法
從專案的屬性集取得屬性的值。 屬性可以依名稱或屬性集的格式識別碼指定, (FMTID) 和屬性識別碼 (PID) 。
語法
retVal = ShellFolderItem.ExtendedProperty(
sPropName
)
參數
-
sPropName [in]
-
類型: BSTR
指定 屬性的 String 值。 如需詳細資訊,請參閱<備註>一節。
傳回值
類型: Variant*
當這個方法傳回時,如果指定專案存在,則包含 屬性的值。 此值會完整輸入,例如,日期會以日期的形式傳回,而不是字串。
如果屬性有效但不存在於指定的專案,否則會傳回零長度字串,否則會傳回錯誤碼。
備註
有兩種方式可以指定屬性。 第一個是將屬性的已知名稱,例如 「Author」 或 「Date」 指派給 sPropName。 不過,每個屬性都是元件物件模型 (COM) 屬性集的成員,也可以藉由指定其格式識別碼 (FMTID) 和屬性識別碼 (PID) 來識別。 FMTID是識別屬性集的GUID,而 PID是識別屬性集內特定屬性的整數。
藉由 FMTID/PID 值指定屬性通常比使用其名稱更有效率。 若要搭配 ExtendedProperty使用屬性的 FMTID/PID 值,必須將它們合併成 SCID。 SCID 是字串,其中包含格式為 「FMTID**PID」 的 FMTID/PID值,其中 FMTID 是屬性集 GUID 的字串格式。 例如,摘要資訊屬性集作者屬性的 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 專業版 [僅限傳統型應用程式] |
最低支援的伺服器 |
Windows 2000 Server [僅限傳統型應用程式] |
標頭 |
|
Idl |
|
DLL |
|