Dame los detalles o información de resumen de archivo
Cómo leer el Archivo de Resumen de la Información para los archivos de Office
En Windows 2000 puede hacer clic derecho en el Explorador, para obtener las propiedades de archivo en cualquier archivo y se puede asociar la información de resumen para cualquier tipo de archivos, incluso los archivos de texto.
Para documentos de Word o Excel (compuesto de archivos), el resumen de la información es una parte del documento en sí.
Para otros tipos de archivos de la forma de almacenamiento de información adicional son diferentes. Esta característica sólo están disponibles en volúmenes formateados con NTFS. El NTFS aplicación almacena conjuntos de propiedades en secuencias alternativas de archivo NTFS. Los flujos alternativos debe ser copiado siempre y cuando el archivo principal es copiado. Sin embargo, no todos los sistemas de archivos de soporte de dichos flujos. Por ejemplo, si un archivo NTFS con conjuntos de propiedades es copiado a un volumen FAT, sólo los datos en el archivo se copia el conjunto de propiedades que se pierde.
la Primera cosa que usted probablemente querrá hacer es detectar si el volumen actual es NTFS:
// IsNTFS() - Comprueba si el archivo del volumen NTFS
función IsNTFS(AFileName : cadena) : boolean
var
& nbsp fso, drv : OleVariant
begin
& nbsp IsNTFS := False
& nbsp fso := CreateOleObject( ' Scripting.FileSystemObject')
& nbsp drv := fso.GetDrive(fso.GetDriveName(AFileName))
& nbsp & nbsp si drv.Sistema de ficheros = 'NTFS'
& nbsp & nbsp & nbsp IsNTFS := True
fin
Pero, ¿cómo leer estas propiedades? Es realmente así lo requiriesen para trabajar con un arroyos?
No, el sistema de archivos NTFS 5.0 proporciona una implementación de IPropertySetStorage interfaz para los archivos en un volumen NTFS cuando los archivos no son en sí el compuesto archivos. Para obtener un puntero a la NTFS implementación de IPropertySetStorage, tenemos que llamar a la StgCreateStorageEx función:
función StgOpenStorageEx (
& nbsp & nbsp const pwcsName : POleStr //Puntero a la ruta de la
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp //archivo que contiene el objeto de almacenamiento
& nbsp & nbsp grfMode : LongInt //Especifica el modo de acceso para el objeto
& nbsp & nbsp stgfmt : DWORD //Especifica el almacenamiento formato de archivo
& nbsp & nbsp grfAttrs : DWORD //Reservada debe ser cero
& nbsp & nbsp pStgOptions : Puntero //Dirección de la STGOPTIONS puntero
& nbsp & nbsp reservado2 : Puntero //Reservada debe ser cero
& nbsp & nbsp riid : PGUID //Especifica el GUID de la interfaz puntero
& nbsp & nbsp stgOpen : //Dirección de un puntero de interfaz
& nbsp & nbsp IStorage ) : HResult stdcall externo 'ole32.dll'
Todos los de Microsoft Windows 2000 las aplicaciones deben utilizar esta nueva función, StgOpenStorageEx, en lugar de Artículo, para tomar ventaja de la mejorada de Windows 2000 de Almacenamiento Estructurado de características.
La aplicación de IPropertySetStorage en el sistema de archivos NTFS es similar con el compuesto de la implementación de archivos y está disponible sólo en Windows 2000. Windows 95 y Windows NT 4.0 y versiones anteriores no pueden acceder a esta interfaz.
sin Embargo, usted no puede obtener el NTFS implementación de IPropertySetStorage de un compuesto de archivo. Al abrir un archivo compuesto con el Artículo, especificando el STGFMT_FILE valor de enumeración resulta en un error.
La siguiente función de los vertederos de todas las propiedades del archivo específico. Cambiando el STGFMT_FILE bandera en el StgOpenStorageEx llamada a STGMT_ANY de que pueda abrir un Almacenamiento Estructurado conjunto de propiedades o un sistema de archivos NTFS conjunto de propiedades.
función GetFileSummaryInfo(const nombre de archivo: WideString): Cadena
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 //Indica que el archivo no debe ser un archivo compuesto.
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp //Este elemento sólo es válida cuando se utiliza el StgCreateStorageEx
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp //o StgOpenStorageEx funciones de acceso al sistema de archivos NTFS
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp //implementación de la IPropertySetStorage interfaz.
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp //por lo Tanto, estas funciones devuelven un error si la riid
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp //parámetro no se especifica el IPropertySetStorage de la interfaz,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp //o si el archivo especificado no se encuentra en un sistema de archivos NTFS volumen.
& nbsp STGFMT_ANY = 4 //Indica que el sistema va a determinar el tipo de archivo y
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp //utilice el adecuado almacenamiento estructurado o conjunto de propiedades
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp //la aplicación.
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp //Este valor no puede ser utilizado con el StgCreateStorageEx función.
// Resumen de la Información
& 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 // Documento Resumen de la Información
& 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 I: Integer
& nbsp & nbsp PropSetStg: IPropertySetStorage
& nbsp & nbsp PropSpec: array de TPropSpec
& nbsp & nbsp PropStg: IPropertyStorage
& nbsp & nbsp PropVariant: array de TPropVariant
& nbsp & nbsp Rslt: HResult
& nbsp & nbsp S: Cadena
& nbsp & nbsp Stg: IStorage
& nbsp & nbsp PropEnum: IEnumSTATPROPSTG
& nbsp & nbsp HR : HResult
& nbsp & nbsp PropStat: STATPROPSTG
& nbsp & nbsp k : integer
función PropertyPIDToCaption(const ePID: Cardinal): cadena
begin
& nbsp & nbsp caso ePID de
& nbsp & nbsp & nbsp & nbsp PID_TITLE:
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := 'Título'
& nbsp & nbsp & nbsp & nbsp PID_SUBJECT:
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := 'Asunto'
& nbsp & nbsp & nbsp & nbsp PID_AUTHOR:
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := 'Autor'
& nbsp & nbsp & nbsp & nbsp PID_KEYWORDS:
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := 'palabras clave'
& nbsp & nbsp & nbsp & nbsp PID_COMMENTS:
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := 'Comentarios'
& nbsp & nbsp & nbsp & nbsp PID_TEMPLATE:
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := 'Plantilla'
& nbsp & nbsp & nbsp & nbsp PID_LASTAUTHOR:
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := 'Guardado Por'
& nbsp & nbsp & nbsp & nbsp PID_REVNUMBER:
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := 'Número de Revisión'
& nbsp & nbsp & nbsp & nbsp PID_EDITTIME:
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := 'Total de Tiempo de Edición'
& nbsp & nbsp & nbsp & nbsp PID_LASTPRINTED:
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := 'Impreso'
& nbsp & nbsp & nbsp & nbsp PID_CREATE_DTM:
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := 'Crear de la Hora/Fecha'
& nbsp & nbsp & nbsp & nbsp PID_LASTSAVE_DTM:
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := 'Guardado Última Hora/Fecha'
& nbsp & nbsp & nbsp & nbsp PID_PAGECOUNT:
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := 'Número de Páginas'
& nbsp & nbsp & nbsp & nbsp PID_WORDCOUNT:
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := 'Número de Palabras'
& nbsp & nbsp & nbsp & nbsp PID_CHARCOUNT:
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := 'Número de Caracteres'
& nbsp & nbsp & nbsp & nbsp PID_THUMBNAIL:
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := 'Miniatura'
& nbsp & nbsp & nbsp & nbsp PID_APPNAME:
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := 'Crear Aplicación'
& nbsp & nbsp & nbsp & nbsp PID_SECURITY:
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := 'Seguridad'
& nbsp & nbsp & nbsp & nbsp persona
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := '$' IntToHex(ePID, 8)
& nbsp & nbsp & nbsp & nbsp fin
fin
begin
& nbsp & nbsp Resultado := '
& nbsp prueba
& nbsp & nbsp OleCheck(StgOpenStorageEx(PWideChar(nombre de archivo),
& nbsp & nbsp STGM_READ o STGM_SHARE_DENY_WRITE,
& nbsp & nbsp STGFMT_FILE,
& nbsp & nbsp 0, nil, nil, @IID_IPropertySetStorage, stg))
& nbsp & nbsp PropSetStg := Stg como IPropertySetStorage
& nbsp & nbsp OleCheck(PropSetStg.Abierto(FmtID_SummaryInformation,
& nbsp & nbsp & nbsp & nbsp & nbsp STGM_READ o STGM_SHARE_EXCLUSIVE, PropStg))
& nbsp & nbsp OleCheck(PropStg.Enum(PropEnum))
& nbsp & nbsp I := 0
& nbsp & nbsp hr := PropEnum.Siguiente(1, PropStat, nil)
& nbsp & nbsp & nbsp mientras hr = S_OK
& nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp inc(I)
& nbsp & nbsp & nbsp & nbsp & nbsp SetLength(PropSpec,I)
& nbsp & nbsp & nbsp & nbsp & nbsp PropSpec[i-1].ulKind := PRSPEC_PROPID
& nbsp & nbsp & nbsp & nbsp & nbsp PropSpec[i-1].propid := PropStat.propid
& nbsp & nbsp & nbsp & nbsp & nbsp hr := PropEnum.Siguiente(1, PropStat, nil)
& nbsp & nbsp fin
& nbsp & nbsp SetLength(PropVariant,i)
& nbsp & nbsp Rslt := PropStg.ReadMultiple(i, @PropSpec[0], @PropVariant[0])
& nbsp & nbsp si Rslt = S_FALSE entonces Salir
& nbsp & nbsp para k := 0 al - 1
& nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp S := '
& nbsp & nbsp & nbsp & nbsp & nbsp si PropVariant[k].vt = VT_LPSTR
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si Asignado(PropVariant[k].pszVal)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp S := PropVariant[k].pszVal
& nbsp & nbsp & nbsp & nbsp & nbsp S := Format(PropertyPIDToCaption(PropSpec[k].Propid) ' %s',[s])
& nbsp & nbsp & nbsp & nbsp si S <> ' Resultado := Resultado S #13
& nbsp & nbsp fin
& nbsp & nbsp finalmente
& nbsp & nbsp final
fin
Dame los detalles o informacion de resumen de archivo
Dame los detalles o informacion de resumen de archivo : Multi-millones de consejos para hacer su vida mas facil.
Como leer el Archivo de Resumen de la Informacion para los archivos de Office
En Windows 2000 puede hacer clic derecho en el Explorador, para obtener las propiedades de archivo en cualquier archivo y se puede asociar la informacion de resumen para cualquier tipo de archivos, incluso los archivos de texto.
Para documentos de Word o Excel (compuesto de archivos), el resumen de la informacion es una parte del documento en si.
Para otros tipos de archivos de la forma de almacenamiento de informacion adicional son diferentes. Esta caracteristica solo estan disponibles en volumenes formateados con NTFS. El NTFS aplicacion almacena conjuntos de propiedades en secuencias alternativas de archivo NTFS. Los flujos alternativos debe ser copiado siempre y cuando el archivo principal es copiado. Sin embargo, no todos los sistemas de archivos de soporte de dichos flujos. Por ejemplo, si un archivo NTFS con conjuntos de propiedades es copiado a un volumen FAT, solo los datos en el archivo se copia el conjunto de propiedades que se pierde.
la Primera cosa que usted probablemente querra hacer es detectar si el volumen actual es NTFS:
// IsNTFS() - Comprueba si el archivo del volumen NTFS
funcion IsNTFS(AFileName : cadena) : boolean
var
& nbsp fso, drv : OleVariant
begin
& nbsp IsNTFS := False
& nbsp fso := CreateOleObject( ' Scripting.FileSystemObject')
& nbsp drv := fso.GetDrive(fso.GetDriveName(AFileName))
& nbsp & nbsp si drv.Sistema de ficheros = 'NTFS'
& nbsp & nbsp & nbsp IsNTFS := True
fin
Pero, ¿como leer estas propiedades? Es realmente asi lo requiriesen para trabajar con un arroyos?
No, el sistema de archivos NTFS 5.0 proporciona una implementacion de IPropertySetStorage interfaz para los archivos en un volumen NTFS cuando los archivos no son en si el compuesto archivos. Para obtener un puntero a la NTFS implementacion de IPropertySetStorage, tenemos que llamar a la StgCreateStorageEx funcion:
funcion StgOpenStorageEx (
& nbsp & nbsp const pwcsName : POleStr //Puntero a la ruta de la
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp //archivo que contiene el objeto de almacenamiento
& nbsp & nbsp grfMode : LongInt //Especifica el modo de acceso para el objeto
& nbsp & nbsp stgfmt : DWORD //Especifica el almacenamiento formato de archivo
& nbsp & nbsp grfAttrs : DWORD //Reservada debe ser cero
& nbsp & nbsp pStgOptions : Puntero //Direccion de la STGOPTIONS puntero
& nbsp & nbsp reservado2 : Puntero //Reservada debe ser cero
& nbsp & nbsp riid : PGUID //Especifica el GUID de la interfaz puntero
& nbsp & nbsp stgOpen : //Direccion de un puntero de interfaz
& nbsp & nbsp IStorage ) : HResult stdcall externo 'ole32.dll'
Todos los de Microsoft Windows 2000 las aplicaciones deben utilizar esta nueva funcion, StgOpenStorageEx, en lugar de Articulo, para tomar ventaja de la mejorada de Windows 2000 de Almacenamiento Estructurado de caracteristicas.
La aplicacion de IPropertySetStorage en el sistema de archivos NTFS es similar con el compuesto de la implementacion de archivos y esta disponible solo en Windows 2000. Windows 95 y Windows NT 4.0 y versiones anteriores no pueden acceder a esta interfaz.
sin Embargo, usted no puede obtener el NTFS implementacion de IPropertySetStorage de un compuesto de archivo. Al abrir un archivo compuesto con el Articulo, especificando el STGFMT_FILE valor de enumeracion resulta en un error.
La siguiente funcion de los vertederos de todas las propiedades del archivo especifico. Cambiando el STGFMT_FILE bandera en el StgOpenStorageEx llamada a STGMT_ANY de que pueda abrir un Almacenamiento Estructurado conjunto de propiedades o un sistema de archivos NTFS conjunto de propiedades.
funcion GetFileSummaryInfo(const nombre de archivo: WideString): Cadena
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 //Indica que el archivo no debe ser un archivo compuesto.
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp //Este elemento solo es valida cuando se utiliza el StgCreateStorageEx
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp //o StgOpenStorageEx funciones de acceso al sistema de archivos NTFS
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp //implementacion de la IPropertySetStorage interfaz.
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp //por lo Tanto, estas funciones devuelven un error si la riid
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp //parametro no se especifica el IPropertySetStorage de la interfaz,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp //o si el archivo especificado no se encuentra en un sistema de archivos NTFS volumen.
& nbsp STGFMT_ANY = 4 //Indica que el sistema va a determinar el tipo de archivo y
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp //utilice el adecuado almacenamiento estructurado o conjunto de propiedades
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp //la aplicacion.
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp //Este valor no puede ser utilizado con el StgCreateStorageEx funcion.
// Resumen de la Informacion
& 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 // Documento Resumen de la Informacion
& 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 I: Integer
& nbsp & nbsp PropSetStg: IPropertySetStorage
& nbsp & nbsp PropSpec: array de TPropSpec
& nbsp & nbsp PropStg: IPropertyStorage
& nbsp & nbsp PropVariant: array de TPropVariant
& nbsp & nbsp Rslt: HResult
& nbsp & nbsp S: Cadena
& nbsp & nbsp Stg: IStorage
& nbsp & nbsp PropEnum: IEnumSTATPROPSTG
& nbsp & nbsp HR : HResult
& nbsp & nbsp PropStat: STATPROPSTG
& nbsp & nbsp k : integer
funcion PropertyPIDToCaption(const ePID: Cardinal): cadena
begin
& nbsp & nbsp caso ePID de
& nbsp & nbsp & nbsp & nbsp PID_TITLE:
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := 'Titulo'
& nbsp & nbsp & nbsp & nbsp PID_SUBJECT:
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := 'Asunto'
& nbsp & nbsp & nbsp & nbsp PID_AUTHOR:
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := 'Autor'
& nbsp & nbsp & nbsp & nbsp PID_KEYWORDS:
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := 'palabras clave'
& nbsp & nbsp & nbsp & nbsp PID_COMMENTS:
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := 'Comentarios'
& nbsp & nbsp & nbsp & nbsp PID_TEMPLATE:
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := 'Plantilla'
& nbsp & nbsp & nbsp & nbsp PID_LASTAUTHOR:
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := 'Guardado Por'
& nbsp & nbsp & nbsp & nbsp PID_REVNUMBER:
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := 'Numero de Revision'
& nbsp & nbsp & nbsp & nbsp PID_EDITTIME:
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := 'Total de Tiempo de Edicion'
& nbsp & nbsp & nbsp & nbsp PID_LASTPRINTED:
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := 'Impreso'
& nbsp & nbsp & nbsp & nbsp PID_CREATE_DTM:
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := 'Crear de la Hora/Fecha'
& nbsp & nbsp & nbsp & nbsp PID_LASTSAVE_DTM:
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := 'Guardado Ultima Hora/Fecha'
& nbsp & nbsp & nbsp & nbsp PID_PAGECOUNT:
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := 'Numero de Paginas'
& nbsp & nbsp & nbsp & nbsp PID_WORDCOUNT:
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := 'Numero de Palabras'
& nbsp & nbsp & nbsp & nbsp PID_CHARCOUNT:
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := 'Numero de Caracteres'
& nbsp & nbsp & nbsp & nbsp PID_THUMBNAIL:
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := 'Miniatura'
& nbsp & nbsp & nbsp & nbsp PID_APPNAME:
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := 'Crear Aplicacion'
& nbsp & nbsp & nbsp & nbsp PID_SECURITY:
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := 'Seguridad'
& nbsp & nbsp & nbsp & nbsp persona
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := '$' IntToHex(ePID, 8)
& nbsp & nbsp & nbsp & nbsp fin
fin
begin
& nbsp & nbsp Resultado := '
& nbsp prueba
& nbsp & nbsp OleCheck(StgOpenStorageEx(PWideChar(nombre de archivo),
& nbsp & nbsp STGM_READ o STGM_SHARE_DENY_WRITE,
& nbsp & nbsp STGFMT_FILE,
& nbsp & nbsp 0, nil, nil, @IID_IPropertySetStorage, stg))
& nbsp & nbsp PropSetStg := Stg como IPropertySetStorage
& nbsp & nbsp OleCheck(PropSetStg.Abierto(FmtID_SummaryInformation,
& nbsp & nbsp & nbsp & nbsp & nbsp STGM_READ o STGM_SHARE_EXCLUSIVE, PropStg))
& nbsp & nbsp OleCheck(PropStg.Enum(PropEnum))
& nbsp & nbsp I := 0
& nbsp & nbsp hr := PropEnum.Siguiente(1, PropStat, nil)
& nbsp & nbsp & nbsp mientras hr = S_OK
& nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp inc(I)
& nbsp & nbsp & nbsp & nbsp & nbsp SetLength(PropSpec,I)
& nbsp & nbsp & nbsp & nbsp & nbsp PropSpec[i-1].ulKind := PRSPEC_PROPID
& nbsp & nbsp & nbsp & nbsp & nbsp PropSpec[i-1].propid := PropStat.propid
& nbsp & nbsp & nbsp & nbsp & nbsp hr := PropEnum.Siguiente(1, PropStat, nil)
& nbsp & nbsp fin
& nbsp & nbsp SetLength(PropVariant,i)
& nbsp & nbsp Rslt := PropStg.ReadMultiple(i, @PropSpec[0], @PropVariant[0])
& nbsp & nbsp si Rslt = S_FALSE entonces Salir
& nbsp & nbsp para k := 0 al - 1
& nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp S := '
& nbsp & nbsp & nbsp & nbsp & nbsp si PropVariant[k].vt = VT_LPSTR
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si Asignado(PropVariant[k].pszVal)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp S := PropVariant[k].pszVal
& nbsp & nbsp & nbsp & nbsp & nbsp S := Format(PropertyPIDToCaption(PropSpec[k].Propid) ' %s',[s])
& nbsp & nbsp & nbsp & nbsp si S <> ' Resultado := Resultado S #13
& nbsp & nbsp fin
& nbsp & nbsp finalmente
& nbsp & nbsp final
fin
Dame los detalles o información de resumen de archivo
By Consejos Y Trucos
Dame los detalles o información de resumen de archivo : Multi-millones de consejos para hacer su vida más fácil.