Donnez-moi les détails ou le fichier d'informations de résumé
Comment faire pour lire le Fichier des Informations de Résumé pour les non fichiers Office
Sur Windows 2000, vous pouvez droit-cliquez sur Explorer afin d'obtenir les propriétés d'un fichier sur n'importe quel fichier et pouvez associer des informations de résumé à tout type de fichiers, y compris même les fichiers de texte.
Pour les documents Word ou Excel (fichiers composés), le résumé de l'information est une partie du document lui-même.
Pour les autres types de fichiers de la manière de stocker des informations supplémentaires sont différents. Cette fonctionnalité est disponible uniquement sur les volumes formatés en NTFS. Le NTFS de mise en œuvre de magasins de jeux de propriétés dans les flux alternatifs de fichiers NTFS. Le flux de remplacement doit être copié lorsque le fichier est copié. Cependant, pas tous les systèmes de fichiers de support de ces flux. Par exemple, si un fichier NTFS avec des ensembles de propriétés est copié vers un volume FAT, seules les données dans le fichier est copié la propriété de l'ensemble est perdu.
la Première chose que vous voudrez probablement faire est de détecter si le volume actuel est NTFS:
// IsNTFS() - Vérifie si le fichier d'un volume NTFS
fonction IsNTFS(AFileName : string) : boolean
var
& nbsp ofs, drv : OleVariant
begin
& nbsp IsNTFS := False
& nbsp ofs := CreateOleObject('Script.FileSystemObject')
& nbsp drv := fso.GetDrive(ofs.GetDriveName(AFileName))
& nbsp & nbsp si drv.Système de fichiers = 'NTFS'
& nbsp & nbsp & nbsp IsNTFS := True
fin
Mais comment faire pour lire ces propriétés? Est-il vraiment nessesary de travailler avec un flux?
Non, système de fichiers NTFS 5.0 fournit une implémentation de IPropertySetStorage interface pour les fichiers sur un volume NTFS lorsque les fichiers eux-mêmes ne sont pas composés de fichiers. Pour obtenir un pointeur vers le NTFS mise en œuvre de IPropertySetStorage, nous devons appeler la StgCreateStorageEx fonction:
fonction StgOpenStorageEx (
& nbsp & nbsp const pwcsName : POleStr //Pointeur vers le chemin de la
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp //fichier contenant l'objet de stockage
& nbsp & nbsp grfMode : LongInt //Spécifie le mode d'accès de l'objet
& nbsp & nbsp stgfmt : DWORD //Spécifie le format de fichier de stockage
& nbsp & nbsp grfAttrs : DWORD //Réservé doit être égale à zéro,
& nbsp & nbsp pStgOptions : Pointeur //Adresse de STGOPTIONS pointeur
& nbsp & nbsp reserved2 : Pointeur //Réservé doit être égale à zéro,
& nbsp & nbsp riid : PGUID //Spécifie le GUID de l'interface pointeur
& nbsp & nbsp stgOpen : //Adresse d'un pointeur d'interface
& nbsp & nbsp IStorage ) : HResult stdcall externe 'ole32.dll'
Tous les programmes Microsoft Windows 2000 applications devraient utiliser cette nouvelle fonction, StgOpenStorageEx, au lieu de StgOpenStorage, pour profiter de l'amélioration de Windows 2000 Structurée des fonctions de Stockage.
La mise en œuvre de IPropertySetStorage sur le système de fichiers NTFS est similaire avec un composé de fichier de la mise en œuvre et disponible uniquement sur Windows 2000. Windows 95 et Windows NT 4.0 et versions antérieures ne peuvent pas accéder à cette interface.
Cependant, vous ne pouvez pas obtenir le NTFS mise en œuvre de IPropertySetStorage pour un composé de fichier. Lors de l'ouverture d'un fichier composé avec StgOpenStorage, en précisant le STGFMT_FILE valeur de l'énumération entraîne une erreur.
La prochaine décharges de fonction toutes les propriétés d'un fichier donné. En changeant la STGFMT_FILE drapeau dans le StgOpenStorageEx appel à STGMT_ANY vous pouvez ouvrir un Stockage Structuré ensemble de propriétés ou d'un système de fichiers NTFS ensemble de propriétés.
fonction GetFileSummaryInfo(const nom du fichier: WideString): String
const
& nbsp FmtID_SummaryInformation: TGUID = '{F29F85E0-4FF9-1068-AB91-08002B27B3D9}'
& nbsp FMTID_DocSummaryInformation : TGUID = '{D5CDD502-2E9C-101B-9397-08002B2CF9AE}'
& nbsp FMTID_UserDefinedProperties : TGUID = '{D5CDD505-2E9C-101B-9397-08002B2CF9AE}'
& nbsp IID_IPropertySetStorage : TGUID = '{0000013A-0000-0000-C000-000000000046}'
const
& nbsp STGFMT_FILE = 3 //Indique que le fichier ne doit pas être un composé de fichier.
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp //Cet élément est valide seulement lors de l'utilisation de la StgCreateStorageEx
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp //ou StgOpenStorageEx fonctions pour accéder au système de fichiers NTFS
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp //mise en œuvre de la IPropertySetStorage interface.
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp //par conséquent, ces fonctions renvoient une erreur si la riid
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp //paramètre de ne pas préciser le IPropertySetStorage interface,
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp //ou si le fichier spécifié n'est pas situé sur un volume NTFS.
& nbsp STGFMT_ANY = 4 //Indique que le système permettra de déterminer le type de fichier et
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp //utiliser le stockage structuré ou bien ensemble
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp //mise en œuvre.
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp //Cette valeur ne peut pas être utilisé avec le StgCreateStorageEx fonction.
// Résumé de l'Information
& nbsp & nbsp PID_TITLE = 2
& nbsp & nbsp PID_SUBJECT = 3
& nbsp & nbsp PID_AUTHOR = 4
& nbsp & nbsp PID_KEYWORDS = 5
& nbsp & nbsp PID_COMMENTS = 6
& nbsp & nbsp PID_TEMPLATE = 7
& nbsp & nbsp PID_LASTAUTHOR = 8
& nbsp & nbsp PID_REVNUMBER = 9
& nbsp & nbsp PID_EDITTIME = 10
& nbsp & nbsp PID_LASTPRINTED = 11
& nbsp & nbsp PID_CREATE_DTM = 12
& nbsp & nbsp PID_LASTSAVE_DTM = 13
& nbsp & nbsp PID_PAGECOUNT = 14
& nbsp & nbsp PID_WORDCOUNT = 15
& nbsp & nbsp PID_CHARCOUNT = 16
& nbsp & nbsp PID_THUMBNAIL = 17
& nbsp & nbsp PID_APPNAME = 18
& nbsp & nbsp PID_SECURITY = 19
& nbsp & nbsp // Document de Synthèse de l'Information
& nbsp & nbsp PID_CATEGORY = 2
& nbsp & nbsp PID_PRESFORMAT = 3
& nbsp & nbsp PID_BYTECOUNT = 4
& nbsp & nbsp PID_LINECOUNT = 5
& nbsp & nbsp PID_PARCOUNT = 6
& nbsp & nbsp PID_SLIDECOUNT = 7
& nbsp & nbsp PID_NOTECOUNT = 8
& nbsp & nbsp PID_HIDDENCOUNT = 9
& nbsp & nbsp PID_MMCLIPCOUNT = 10
& nbsp & nbsp PID_SCALE = 11
& nbsp & nbsp PID_HEADINGPAIR = 12
& nbsp & nbsp PID_DOCPARTS = 13
& nbsp & nbsp PID_MANAGER = 14
& nbsp & nbsp PID_COMPANY = 15
& nbsp & nbsp PID_LINKSDIRTY = 16
& nbsp & nbsp PID_CHARCOUNT2 = 17
var
& nbsp & nbsp j'ai: Entier
& nbsp & nbsp PropSetStg: IPropertySetStorage
& nbsp & nbsp PropSpec: array TPropSpec
& nbsp & nbsp PropStg: IPropertyStorage
& nbsp & nbsp PropVariant: array TPropVariant
& nbsp & nbsp Rslt: HResult
& nbsp & nbsp S: String
& nbsp & nbsp Stg: IStorage
& nbsp & nbsp PropEnum: IEnumSTATPROPSTG
& nbsp & nbsp RH : HResult
& nbsp & nbsp PropStat: STATPROPSTG
& nbsp & nbsp k : integer
fonction PropertyPIDToCaption(const ePID: le Cardinal): string
begin
& nbsp & nbsp cas ePID de
& ! & ! & ! & nbsp PID_TITLE:
& ! & ! & ! & ! & ! & nbsp Résultat := 'Titre'
& ! & ! & ! & nbsp PID_SUBJECT:
& ! & ! & ! & ! & ! & nbsp Résultat := 'Sujet'
& ! & ! & ! & nbsp PID_AUTHOR:
& ! & ! & ! & ! & ! & nbsp Résultat := 'Auteur'
& ! & ! & ! & nbsp PID_KEYWORDS:
& ! & ! & ! & ! & ! & nbsp Résultat := 'mots-clés'
& ! & ! & ! & nbsp PID_COMMENTS:
& ! & ! & ! & ! & ! & nbsp Résultat := 'Commentaires'
& ! & ! & ! & nbsp PID_TEMPLATE:
& ! & ! & ! & ! & ! & nbsp Résultat := Modèle
& ! & ! & ! & nbsp PID_LASTAUTHOR:
& ! & ! & ! & ! & ! & nbsp Résultat := 'Dernier enregistrement Par'
& ! & ! & ! & nbsp PID_REVNUMBER:
& ! & ! & ! & ! & ! & nbsp Résultat := 'Numéro de Révision'
& ! & ! & ! & nbsp PID_EDITTIME:
& ! & ! & ! & ! & ! & nbsp Résultat := 'Totale de Modification'
& ! & ! & ! & nbsp PID_LASTPRINTED:
& ! & ! & ! & ! & ! & nbsp Résultat := 'Imprimé'
& ! & ! & ! & nbsp PID_CREATE_DTM:
& ! & ! & ! & ! & ! & nbsp Résultat := 'Créer de l'Heure/Date'
& ! & ! & ! & nbsp PID_LASTSAVE_DTM:
& ! & ! & ! & ! & ! & nbsp Résultat := 'Enregistré pour la Dernière Heure/Date'
& ! & ! & ! & nbsp PID_PAGECOUNT:
& ! & ! & ! & ! & ! & nbsp Résultat := 'Nombre de Pages'
& ! & ! & ! & nbsp PID_WORDCOUNT:
& ! & ! & ! & ! & ! & nbsp Résultat := 'Nombre de Mots'
& ! & ! & ! & nbsp PID_CHARCOUNT:
& ! & ! & ! & ! & ! & nbsp Résultat := 'Nombre de Caractères'
& ! & ! & ! & nbsp PID_THUMBNAIL:
& ! & ! & ! & ! & ! & nbsp Résultat := 'Vignette'
& ! & ! & ! & nbsp PID_APPNAME:
& ! & ! & ! & ! & ! & nbsp Résultat := 'la Création de l'Application'
& ! & ! & ! & nbsp PID_SECURITY:
& ! & ! & ! & ! & ! & nbsp Résultat := 'Sécurité'
& ! & ! & ! & nbsp else
& ! & ! & ! & ! & ! & nbsp Result := '$' IntToHex(ePID, 8)
& ! & ! & ! & nbsp fin
fin
begin
& nbsp & nbsp Result := '
& nbsp
& nbsp & nbsp OleCheck(StgOpenStorageEx(PWideChar(nom de fichier),
& nbsp & nbsp STGM_READ ou STGM_SHARE_DENY_WRITE,
& nbsp & nbsp STGFMT_FILE,
& nbsp & nbsp 0, nul, nul, @IID_IPropertySetStorage, stg))
& nbsp & nbsp PropSetStg := Stg IPropertySetStorage
& nbsp & nbsp OleCheck(PropSetStg.Ouvert(FmtID_SummaryInformation,
& ! & ! & ! & ! & nbsp STGM_READ ou STGM_SHARE_EXCLUSIVE, PropStg))
& nbsp & nbsp OleCheck(PropStg.Enum(PropEnum))
& nbsp & nbsp I := 0
& nbsp & nbsp rh := PropEnum.Prochaine(1, PropStat, nul)
& nbsp & nbsp & nbsp while hr = S_OK do
& nbsp & nbsp & nbsp commencer
& ! & ! & ! & ! & nbsp inc(I)
& ! & ! & ! & ! & nbsp SetLength(PropSpec,I)
& ! & ! & ! & ! & nbsp PropSpec[i-1].ulKind := PRSPEC_PROPID
& ! & ! & ! & ! & nbsp PropSpec[i-1].propid := PropStat.propid
& ! & ! & ! & ! & nbsp rh := PropEnum.Prochaine(1, PropStat, nul)
& nbsp & nbsp fin
& nbsp & nbsp SetLength(PropVariant,i)
& nbsp & nbsp Rslt := PropStg.ReadMultiple(i, @PropSpec[0], @PropVariant[0])
& nbsp & nbsp si Rslt = S_FALSE Quitter
& nbsp & nbsp pour k := 0 de i -1
& nbsp & nbsp & nbsp commencer
& ! & ! & ! & ! & nbsp S := '
& ! & ! & ! & ! & nbsp si PropVariant[k].vt = VT_LPSTR puis
& ! & ! & ! & ! & ! & ! & nbsp si Assigné(PropVariant[k].pszVal) puis
& ! & ! & ! & ! & ! & ! & ! & nbsp S := PropVariant[k].pszVal
& ! & ! & ! & ! & nbsp S := Format(PropertyPIDToCaption(PropSpec[k].Propid) '%s ' ,[s])
& ! & ! & ! & nbsp si S <> ' Result := Result S #13
& nbsp & nbsp fin
& nbsp & nbsp enfin
& nbsp & nbsp fin
fin
Donnez-moi les details ou le fichier d'informations de resume
Donnez-moi les details ou le fichier d'informations de resume : Plusieurs milliers de conseils pour vous faciliter la vie.
Comment faire pour lire le Fichier des Informations de Resume pour les non fichiers Office
Sur Windows 2000, vous pouvez droit-cliquez sur Explorer afin d'obtenir les proprietes d'un fichier sur n'importe quel fichier et pouvez associer des informations de resume a tout type de fichiers, y compris meme les fichiers de texte.
Pour les documents Word ou Excel (fichiers composes), le resume de l'information est une partie du document lui-meme.
Pour les autres types de fichiers de la maniere de stocker des informations supplementaires sont differents. Cette fonctionnalite est disponible uniquement sur les volumes formates en NTFS. Le NTFS de mise en œuvre de magasins de jeux de proprietes dans les flux alternatifs de fichiers NTFS. Le flux de remplacement doit etre copie lorsque le fichier est copie. Cependant, pas tous les systemes de fichiers de support de ces flux. Par exemple, si un fichier NTFS avec des ensembles de proprietes est copie vers un volume FAT, seules les donnees dans le fichier est copie la propriete de l'ensemble est perdu.
la Premiere chose que vous voudrez probablement faire est de detecter si le volume actuel est NTFS:
// IsNTFS() - Verifie si le fichier d'un volume NTFS
fonction IsNTFS(AFileName : string) : boolean
var
& nbsp ofs, drv : OleVariant
begin
& nbsp IsNTFS := False
& nbsp ofs := CreateOleObject('Script.FileSystemObject')
& nbsp drv := fso.GetDrive(ofs.GetDriveName(AFileName))
& nbsp & nbsp si drv.Systeme de fichiers = 'NTFS'
& nbsp & nbsp & nbsp IsNTFS := True
fin
Mais comment faire pour lire ces proprietes? Est-il vraiment nessesary de travailler avec un flux?
Non, systeme de fichiers NTFS 5.0 fournit une implementation de IPropertySetStorage interface pour les fichiers sur un volume NTFS lorsque les fichiers eux-memes ne sont pas composes de fichiers. Pour obtenir un pointeur vers le NTFS mise en œuvre de IPropertySetStorage, nous devons appeler la StgCreateStorageEx fonction:
fonction StgOpenStorageEx (
& nbsp & nbsp const pwcsName : POleStr //Pointeur vers le chemin de la
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp //fichier contenant l'objet de stockage
& nbsp & nbsp grfMode : LongInt //Specifie le mode d'acces de l'objet
& nbsp & nbsp stgfmt : DWORD //Specifie le format de fichier de stockage
& nbsp & nbsp grfAttrs : DWORD //Reserve doit etre egale a zero,
& nbsp & nbsp pStgOptions : Pointeur //Adresse de STGOPTIONS pointeur
& nbsp & nbsp reserved2 : Pointeur //Reserve doit etre egale a zero,
& nbsp & nbsp riid : PGUID //Specifie le GUID de l'interface pointeur
& nbsp & nbsp stgOpen : //Adresse d'un pointeur d'interface
& nbsp & nbsp IStorage ) : HResult stdcall externe 'ole32.dll'
Tous les programmes Microsoft Windows 2000 applications devraient utiliser cette nouvelle fonction, StgOpenStorageEx, au lieu de StgOpenStorage, pour profiter de l'amelioration de Windows 2000 Structuree des fonctions de Stockage.
La mise en œuvre de IPropertySetStorage sur le systeme de fichiers NTFS est similaire avec un compose de fichier de la mise en œuvre et disponible uniquement sur Windows 2000. Windows 95 et Windows NT 4.0 et versions anterieures ne peuvent pas acceder a cette interface.
Cependant, vous ne pouvez pas obtenir le NTFS mise en œuvre de IPropertySetStorage pour un compose de fichier. Lors de l'ouverture d'un fichier compose avec StgOpenStorage, en precisant le STGFMT_FILE valeur de l'enumeration entraîne une erreur.
La prochaine decharges de fonction toutes les proprietes d'un fichier donne. En changeant la STGFMT_FILE drapeau dans le StgOpenStorageEx appel a STGMT_ANY vous pouvez ouvrir un Stockage Structure ensemble de proprietes ou d'un systeme de fichiers NTFS ensemble de proprietes.
fonction GetFileSummaryInfo(const nom du fichier: WideString): String
const
& nbsp FmtID_SummaryInformation: TGUID = '{F29F85E0-4FF9-1068-AB91-08002B27B3D9}'
& nbsp FMTID_DocSummaryInformation : TGUID = '{D5CDD502-2E9C-101B-9397-08002B2CF9AE}'
& nbsp FMTID_UserDefinedProperties : TGUID = '{D5CDD505-2E9C-101B-9397-08002B2CF9AE}'
& nbsp IID_IPropertySetStorage : TGUID = '{0000013A-0000-0000-C000-000000000046}'
const
& nbsp STGFMT_FILE = 3 //Indique que le fichier ne doit pas etre un compose de fichier.
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp //Cet element est valide seulement lors de l'utilisation de la StgCreateStorageEx
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp //ou StgOpenStorageEx fonctions pour acceder au systeme de fichiers NTFS
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp //mise en œuvre de la IPropertySetStorage interface.
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp //par consequent, ces fonctions renvoient une erreur si la riid
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp //parametre de ne pas preciser le IPropertySetStorage interface,
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp //ou si le fichier specifie n'est pas situe sur un volume NTFS.
& nbsp STGFMT_ANY = 4 //Indique que le systeme permettra de determiner le type de fichier et
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp //utiliser le stockage structure ou bien ensemble
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp //mise en œuvre.
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp //Cette valeur ne peut pas etre utilise avec le StgCreateStorageEx fonction.
// Resume de l'Information
& nbsp & nbsp PID_TITLE = 2
& nbsp & nbsp PID_SUBJECT = 3
& nbsp & nbsp PID_AUTHOR = 4
& nbsp & nbsp PID_KEYWORDS = 5
& nbsp & nbsp PID_COMMENTS = 6
& nbsp & nbsp PID_TEMPLATE = 7
& nbsp & nbsp PID_LASTAUTHOR = 8
& nbsp & nbsp PID_REVNUMBER = 9
& nbsp & nbsp PID_EDITTIME = 10
& nbsp & nbsp PID_LASTPRINTED = 11
& nbsp & nbsp PID_CREATE_DTM = 12
& nbsp & nbsp PID_LASTSAVE_DTM = 13
& nbsp & nbsp PID_PAGECOUNT = 14
& nbsp & nbsp PID_WORDCOUNT = 15
& nbsp & nbsp PID_CHARCOUNT = 16
& nbsp & nbsp PID_THUMBNAIL = 17
& nbsp & nbsp PID_APPNAME = 18
& nbsp & nbsp PID_SECURITY = 19
& nbsp & nbsp // Document de Synthese de l'Information
& nbsp & nbsp PID_CATEGORY = 2
& nbsp & nbsp PID_PRESFORMAT = 3
& nbsp & nbsp PID_BYTECOUNT = 4
& nbsp & nbsp PID_LINECOUNT = 5
& nbsp & nbsp PID_PARCOUNT = 6
& nbsp & nbsp PID_SLIDECOUNT = 7
& nbsp & nbsp PID_NOTECOUNT = 8
& nbsp & nbsp PID_HIDDENCOUNT = 9
& nbsp & nbsp PID_MMCLIPCOUNT = 10
& nbsp & nbsp PID_SCALE = 11
& nbsp & nbsp PID_HEADINGPAIR = 12
& nbsp & nbsp PID_DOCPARTS = 13
& nbsp & nbsp PID_MANAGER = 14
& nbsp & nbsp PID_COMPANY = 15
& nbsp & nbsp PID_LINKSDIRTY = 16
& nbsp & nbsp PID_CHARCOUNT2 = 17
var
& nbsp & nbsp j'ai: Entier
& nbsp & nbsp PropSetStg: IPropertySetStorage
& nbsp & nbsp PropSpec: array TPropSpec
& nbsp & nbsp PropStg: IPropertyStorage
& nbsp & nbsp PropVariant: array TPropVariant
& nbsp & nbsp Rslt: HResult
& nbsp & nbsp S: String
& nbsp & nbsp Stg: IStorage
& nbsp & nbsp PropEnum: IEnumSTATPROPSTG
& nbsp & nbsp RH : HResult
& nbsp & nbsp PropStat: STATPROPSTG
& nbsp & nbsp k : integer
fonction PropertyPIDToCaption(const ePID: le Cardinal): string
begin
& nbsp & nbsp cas ePID de
& ! & ! & ! & nbsp PID_TITLE:
& ! & ! & ! & ! & ! & nbsp Resultat := 'Titre'
& ! & ! & ! & nbsp PID_SUBJECT:
& ! & ! & ! & ! & ! & nbsp Resultat := 'Sujet'
& ! & ! & ! & nbsp PID_AUTHOR:
& ! & ! & ! & ! & ! & nbsp Resultat := 'Auteur'
& ! & ! & ! & nbsp PID_KEYWORDS:
& ! & ! & ! & ! & ! & nbsp Resultat := 'mots-cles'
& ! & ! & ! & nbsp PID_COMMENTS:
& ! & ! & ! & ! & ! & nbsp Resultat := 'Commentaires'
& ! & ! & ! & nbsp PID_TEMPLATE:
& ! & ! & ! & ! & ! & nbsp Resultat := Modele
& ! & ! & ! & nbsp PID_LASTAUTHOR:
& ! & ! & ! & ! & ! & nbsp Resultat := 'Dernier enregistrement Par'
& ! & ! & ! & nbsp PID_REVNUMBER:
& ! & ! & ! & ! & ! & nbsp Resultat := 'Numero de Revision'
& ! & ! & ! & nbsp PID_EDITTIME:
& ! & ! & ! & ! & ! & nbsp Resultat := 'Totale de Modification'
& ! & ! & ! & nbsp PID_LASTPRINTED:
& ! & ! & ! & ! & ! & nbsp Resultat := 'Imprime'
& ! & ! & ! & nbsp PID_CREATE_DTM:
& ! & ! & ! & ! & ! & nbsp Resultat := 'Creer de l'Heure/Date'
& ! & ! & ! & nbsp PID_LASTSAVE_DTM:
& ! & ! & ! & ! & ! & nbsp Resultat := 'Enregistre pour la Derniere Heure/Date'
& ! & ! & ! & nbsp PID_PAGECOUNT:
& ! & ! & ! & ! & ! & nbsp Resultat := 'Nombre de Pages'
& ! & ! & ! & nbsp PID_WORDCOUNT:
& ! & ! & ! & ! & ! & nbsp Resultat := 'Nombre de Mots'
& ! & ! & ! & nbsp PID_CHARCOUNT:
& ! & ! & ! & ! & ! & nbsp Resultat := 'Nombre de Caracteres'
& ! & ! & ! & nbsp PID_THUMBNAIL:
& ! & ! & ! & ! & ! & nbsp Resultat := 'Vignette'
& ! & ! & ! & nbsp PID_APPNAME:
& ! & ! & ! & ! & ! & nbsp Resultat := 'la Creation de l'Application'
& ! & ! & ! & nbsp PID_SECURITY:
& ! & ! & ! & ! & ! & nbsp Resultat := 'Securite'
& ! & ! & ! & nbsp else
& ! & ! & ! & ! & ! & nbsp Result := '$' IntToHex(ePID, 8)
& ! & ! & ! & nbsp fin
fin
begin
& nbsp & nbsp Result := '
& nbsp
& nbsp & nbsp OleCheck(StgOpenStorageEx(PWideChar(nom de fichier),
& nbsp & nbsp STGM_READ ou STGM_SHARE_DENY_WRITE,
& nbsp & nbsp STGFMT_FILE,
& nbsp & nbsp 0, nul, nul, @IID_IPropertySetStorage, stg))
& nbsp & nbsp PropSetStg := Stg IPropertySetStorage
& nbsp & nbsp OleCheck(PropSetStg.Ouvert(FmtID_SummaryInformation,
& ! & ! & ! & ! & nbsp STGM_READ ou STGM_SHARE_EXCLUSIVE, PropStg))
& nbsp & nbsp OleCheck(PropStg.Enum(PropEnum))
& nbsp & nbsp I := 0
& nbsp & nbsp rh := PropEnum.Prochaine(1, PropStat, nul)
& nbsp & nbsp & nbsp while hr = S_OK do
& nbsp & nbsp & nbsp commencer
& ! & ! & ! & ! & nbsp inc(I)
& ! & ! & ! & ! & nbsp SetLength(PropSpec,I)
& ! & ! & ! & ! & nbsp PropSpec[i-1].ulKind := PRSPEC_PROPID
& ! & ! & ! & ! & nbsp PropSpec[i-1].propid := PropStat.propid
& ! & ! & ! & ! & nbsp rh := PropEnum.Prochaine(1, PropStat, nul)
& nbsp & nbsp fin
& nbsp & nbsp SetLength(PropVariant,i)
& nbsp & nbsp Rslt := PropStg.ReadMultiple(i, @PropSpec[0], @PropVariant[0])
& nbsp & nbsp si Rslt = S_FALSE Quitter
& nbsp & nbsp pour k := 0 de i -1
& nbsp & nbsp & nbsp commencer
& ! & ! & ! & ! & nbsp S := '
& ! & ! & ! & ! & nbsp si PropVariant[k].vt = VT_LPSTR puis
& ! & ! & ! & ! & ! & ! & nbsp si Assigne(PropVariant[k].pszVal) puis
& ! & ! & ! & ! & ! & ! & ! & nbsp S := PropVariant[k].pszVal
& ! & ! & ! & ! & nbsp S := Format(PropertyPIDToCaption(PropSpec[k].Propid) '%s ' ,[s])
& ! & ! & ! & nbsp si S <> ' Result := Result S #13
& nbsp & nbsp fin
& nbsp & nbsp enfin
& nbsp & nbsp fin
fin
Donnez-moi les détails ou le fichier d'informations de résumé
By commentfaire
Donnez-moi les détails ou le fichier d'informations de résumé : Plusieurs milliers de conseils pour vous faciliter la vie.