2010-02-15 5 views
2

Comment lire les propriétés (comme le titre, l'auteur, le nombre de pages, etc.) de fichiers utilisant iPropriétéStorage? quelqu'un sait le code C# s'il vous plaît posterComment lire les propriétés des fichiers en utilisant IpropertyStorage?

En fait,

Je suis en train de programatically (en utilisant C#) lire les propriétés du fichier (titre, résumé, auteur, commentaires, etc .... Les choses qui montre dans l'onglet Résumé lorsque vous voyez les propriétés d'un fichier).

Les classes FileInfo et FileSystemInfo exposent uniquement les propriétés standard (créer l'heure, le temps de modification, etc.), donc j'essaie d'utiliser ipropertyStorage. Quelqu'un sait la solution poster, il sera utile.

Répondre

2

Il est invariablement difficile de programmer un shell de cette manière. Vous aurez une chance de combattre sur celui-ci, shell32.dll a une interface d'automatisation qui est appelable à partir des clients COM. La propriété ShellFolderItem :: ExtendedProperty les rend disponibles. Vous aurez besoin d'un projet WPF ou Windows Forms pour que COM soit correctement initialisé. Utilisez Projet + Ajouter une référence, onglet Parcourir, sélectionnez c: \ windows \ system32 \ shell32.dll. Ce code exemple lit la propriété Auteur du c: \ temp \ fichier 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); 

Les valeurs ID de propriété (PID) que vous pouvez utiliser sont documentés dans ce SDK article.

+0

Vous pouvez également utiliser le nom canonique, qui est beaucoup plus lisible que le FMTID. Ici, vous demanderiez la propriété étendue "System.Author". –

+0

msdn.microsoft.com/en-us/library/windows/desktop/... Ceci est une liste des noms des propriétés communes sur les types de médias au cas où quelqu'un d'autre cherche :) – spaceman

Questions connexes