Hvordan lese filinformasjon Informasjon for non Kontor filesOn Windows 2000 kan du høyreklikke i Explorer for å få filegenskaper på en fil, og kan knytte sammendragsinformasjon til alle typer filer, inkludert enda tekstfiler .For Word eller Excel-dokumenter (sammensatte filer) sammendraget informasjon er en del av dokumentet itself.For andre typer filer veien for å lagre tilleggsinformasjon er forskjellige. Denne funksjonen er bare tilgjengelig på volumer som er formatert med NTFS. NTFS gjennomføringen lagrer eiendom komplekser i alternative strømmer av en NTFS-fil. De alternative bekker må kopieres når hoved filen er kopiert. Men ikke alle filsystemer støtter slike bekker. For eksempel, hvis en NTFS fil med eiendom komplekser kopieres til et FAT-volum, blir bare dataene i filen kopiert; eiendommen sett er lost.First ting du sannsynligvis vil gjøre er å finne ut om dagens volum er NTFS:  //IsNTFS () - Kontrollerer om filen volum er NTFS 
  funksjon 
 IsNTFS ( AFileName:  string 
): boolean;  Var 
 FSO, drv: OleVariant;  begynne 
 IsNTFS: = False; fso: = CreateOleObject ('Scripting.FileSystemObject'); drv: = fso.GetDrive (fso.GetDriveName (AFileName));  hvis 
 drv.FileSystem = 'NTFS'  deretter 
 IsNTFS: = True;  end 
, men hvordan å lese disse egenskapene? Er det virkelig Naudsynt å arbeide med en streamer? Nei, NTFS filsystem 5.0 gir en implementering av IPropertySetStorage grensesnitt for filer på et NTFS-volum når selve filene er ikke sammensatte filer. For å få en peker til NTFS gjennomføring av IPropertySetStorage, må vi kalle StgCreateStorageEx funksjon:  funksjon 
 StgOpenStorageEx ( konst 
 pwcsName: POleStr;  //Peker til banen til //inneholder lagringsobjekt fil 
 grfMode: LongInt;  //Angir tilgangsmodus for objektet 
 stgfmt: DWORD;  //Angir lagring filformat 
 grfAttrs: DWORD; < i> //Reserved; må være null 
 pStgOptions: Pointer;  //adresse STGOPTIONS pekeren 
 reserved2: Pointer;  //Reserved; må være null 
 riid: PGUID; < i> //Angir GUID av grensesnittet pekeren 
  ut 
 stgOpen:  //adresse et grensesnitt pekeren 
 iStorage): hresult;  STDCALL 
;  eksterne 
 'Ole32.dll'; Alle Microsoft Windows 2000 søknader bør bruke denne nye funksjonen, StgOpenStorageEx, i stedet for StgOpenStorage, for å dra nytte av den forbedrede Windows 2000 Structured Storage features.The gjennomføring av IPropertySetStorage på NTFS-filsystemet ligner med sammensatt fil implementering og kun tilgjengelig på Windows 2000. Windows 95 og Windows NT 4.0 og tidligere versjoner kan ikke få tilgang til denne interface.However, kan du ikke få tak i NTFS gjennomføring av IPropertySetStorage for en sammensatt fil. Når du åpner en sammensatt fil med StgOpenStorage, med angivelse av STGFMT_FILE oppregning verdi resulterer i en error.The neste funksjon dumper alle egenskapene til den spesifikke filen. Ved å endre STGFMT_FILE flagget i StgOpenStorageEx kallet til STGMT_ANY du kan åpne en strukturert Storage eiendom sett eller en NTFS filsystem eiendom sett  funksjon 
 GetFileSummaryInfo ( konst 
 Filename: WideString):.  String 
;  konst 
 FmtID_SummaryInformation: TGUID = {F29F85E0-4FF9-1068-AB91-08002B27B3D9} '; FMTID_DocSummaryInformation: TGUID = {D5CDD502-2E9C-101B-9397-08002B2CF9AE} '; FMTID_UserDefinedProperties: TGUID = {D5CDD505-2E9C-101B-9397-08002B2CF9AE} '; IID_IPropertySetStorage: TGUID = {0000013A-0000-0000-C000-000000000046};  konst 
 STGFMT_FILE = 3;  //Indikerer at filen ikke må være en sammensatt fil. //Dette elementet er kun gyldig når du bruker StgCreateStorageEx //eller StgOpenStorageEx funksjoner for å få tilgang til NTFS-filsystemet //gjennomføringen av IPropertySetStorage grensesnittet. //Derfor er disse funksjonene returnere en feil hvis riid //parameter ikke angir IPropertySetStorage grensesnitt, //eller hvis den angitte filen ikke ligger på en NTFS-filsystemvolum. 
 STGFMT_ANY = 4;  //Indikerer at systemet vil bestemme filtypen og //bruk riktig strukturert lagring eller eiendom sett //gjennomføring. //Denne verdien kan ikke brukes med StgCreateStorageEx funksjon .//Summary Information 
 PID_TITLE = 2; PID_SUBJECT = 3; PID_AUTHOR = 4; PID_KEYWORDS = 5; PID_COMMENTS = 6; PID_TEMPLATE = 7; PID_LASTAUTHOR = 8; PID_REVNUMBER = 9; PID_EDITTIME = 10; PID_LASTPRINTED = 11; PID_CREATE_DTM = 12; PID_LASTSAVE_DTM = 13; PID_PAGECOUNT = 14; PID_WORDCOUNT = 15; PID_CHARCOUNT = 16; PID_THUMBNAIL = 17; PID_APPNAME = 18; PID_SECURITY = 19;  //Document Summary Information 
 PID_CATEGORY = 2; PID_PRESFORMAT = 3; PID_BYTECOUNT = 4; PID_LINECOUNT = 5; PID_PARCOUNT = 6; PID_SLIDECOUNT = 7; PID_NOTECOUNT = 8; PID_HIDDENCOUNT = 9; PID_MMCLIPCOUNT = 10; PID_SCALE = 11; PID_HEADINGPAIR = 12; PID_DOCPARTS = 13; PID_MANAGER = 14; PID_COMPANY = 15; PID_LINKSDIRTY = 16; PID_CHARCOUNT2 = 17;  Var 
 I: Integer; PropSetStg: IPropertySetStorage; PropSpec:  rekke 
 TPropSpec; PropStg: IPropertyStorage; PropVariant:  rekke 
 TPropVariant; Rslt: hresult; S:  String 
; Stg: iStorage; PropEnum: IEnumSTATPROPSTG; HR: hresult; PropStat: STATPROPSTG; k: integer;  funksjon 
 PropertyPIDToCaption ( konst 
 epiD: Cardinal):  string 
;  begynne tilfelle 
 epiD  av 
 PID_TITLE : Resultat: = 'Tittel'; PID_SUBJECT: Resultat: = 'tema'; PID_AUTHOR: Resultat: = 'Forfatter'; PID_KEYWORDS: Resultat: = 'nøkkelord'; PID_COMMENTS: Resultat: = 'kommentarer'; PID_TEMPLATE: Resultat: = 'mal'; PID_LASTAUTHOR: Resultat: = 'Sist Saved By'; PID_REVNUMBER: Resultat: = 'Revisjonsnummer'; PID_EDITTIME: Resultat: = 'Total Redigering Time'; PID_LASTPRINTED: Resultat: = 'Sist Trykt'; PID_CREATE_DTM: Resultat: = 'Opprett Time /Date'; PID_LASTSAVE_DTM: Resultat: = 'Sist sparte tid /dato'; PID_PAGECOUNT: Resultat: = 'Antall sider'; PID_WORDCOUNT: Resultat: = 'Antall Words'; PID_CHARCOUNT: Resultat: = 'Antall tegn'; PID_THUMBNAIL: Resultat: = 'Thumbnail'; PID_APPNAME: Resultat: = 'Oppretter Application'; PID_SECURITY: Resultat: = 'Security';  annet 
 Resultat: = '$' + IntToHex (epiD, 8);  Sluttslutt 
;  begynne 
 Resultat: '' =;  prøve 
 OleCheck (StgOpenStorageEx (PWideChar (Filename), STGM_READ  eller 
 STGM_SHARE_DENY_WRITE, STGFMT_FILE, 0,  nil 
,  nil 
,IID_IPropertySetStorage, stg )); PropSetStg: = Stg  som 
 IPropertySetStorage; OleCheck (PropSetStg.Open (FmtID_SummaryInformation, STGM_READ  eller 
 STGM_SHARE_EXCLUSIVE, PropStg)); OleCheck (PropStg.Enum (PropEnum)); I: = 0; hr: = PropEnum.Next (1, PropStat,  nil 
);  mens 
 hr = S_OK  gjør begynne 
 inc (I); SetLength (PropSpec, jeg); PropSpec [i-1] .ulKind: = PRSPEC_PROPID; PropSpec [i-1] .propid: = PropStat.propid; hr: = PropEnum.Next (1, PropStat,  nil 
);  end 
; SetLength (PropVariant, i); Rslt: = PropStg.ReadMultiple (i,PropSpec [0],PropVariant [0]);  hvis 
 Rslt = S_FALSE  deretter 
 Exit;  for 
 k: = 0  for bedriften jeg -1  ikke begynne 
 S: = '';  hvis 
 PropVariant [k] .vt = VT_LPSTR  så hvis 
 Assigned (PropVariant [k] .pszVal)  deretter 
 S: = PropVariant [k] .pszVal; S: = Format (PropertyPIDToCaption (PropSpec [k] .Propid) + '% s', [s]);  hvis 
 S < > ''  deretter 
 Resultat: = Resultat + S + # 13;  end 
;  til slutt ende 
;  end 
; 
Gi meg detaljene eller filinformasjon Info
Next Page:Sjekk e-postadressen validity 
			 
        
