2010-02-15 51 views
2

如何使用iPropertyStorage讀取文件的屬性(如標題,作者,頁數等)?任何人都知道代碼在C#請張貼如何使用IpropertyStorage讀取文件的屬性?

其實,

我試圖以編程方式(使用C#)讀取文件屬性(標題,摘要,作者,評論等....的東西,表演當您看到文件的屬性時,在「摘要」選項卡上)。

FileInfo和FileSystemInfo類只公開標準屬性(創建時間,模時間等),所以我試圖使用ipropertyStorage。任何人都知道解決方案發布後會有幫助。

回答

2

像這樣的shell編程總是很難做到。儘管如此,shell32.dll有一個可從COM客戶端調用的自動化接口。 ShellFolderItem :: ExtendedProperty屬性使它們可用。您需要一個WPF或Windows Forms項目,以便COM正確初始化。使用項目+添加引用,瀏覽選項卡,選擇c:\ windows \ system32 \ shell32.dll。此示例代碼讀取C的作者屬性:\ TEMP \ test.txt文件:

Shell32.Shell shl = new Shell32.ShellClass(); 
    Shell32.Folder dir = shl.NameSpace(@"c:\temp"); 
    Shell32.FolderItem itm = dir.Items().Item("test.txt"); 
    Shell32.ShellFolderItem itm2 = (Shell32.ShellFolderItem)itm; 
    string prop = (string)itm2.ExtendedProperty("{F29F85E0-4FF9-1068-AB91-08002B27B3D9} 4"); 
    Console.WriteLine(prop); 

,你可以使用屬性ID(PID)值在這個SDK article被記錄在案。

+0

您還可以使用規範名稱,該名稱比FMTID更具可讀性。在這裏,你會要求「System.Author」擴展屬性。 –

+0

msdn.microsoft.com/en-us/library/windows/desktop/...這是列表中的媒體類型的公共屬性的名稱,以防其他人查看:) – spaceman