你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:杂志经典 / 编程语言
Delphi实现按文件摘要属性查找文件(四)
 

const

  FMTID_SummaryInformation: TGUID = '{F29F85E0-4FF9-1068-AB91-08002B27B3D9}';

  FMTID_DocumentSummaryInformation: TGUID = '{D5CDD502-2E9C-101B-9397-08002B2CF9AE}';

  FMTID_UserDefinedProperties: TGUID = '{D5CDD505-2E9C-101B-9397-08002B2CF9AE}';

  IID_IPropertySetStorage : TGUID = '{0000013A-0000-0000-C000-000000000046}';

 

implementation

 

type

  TPropSpecArray = array [0..1000] of TPropSpec;

  PPropSpecArray = ^TPropSpecArray;

  TPropVariantArray = array [0..1000] of TPropVariant;

  PPropVariantArray = ^TPropVariantArray;

 

  tagSTGOPTIONS = record

    usVersion: ShortInt;

    reserved: Short;

    ulSectorSize: LongInt;

    pwcsTemplateFile: PWideChar;

  end;

 

  STGOPTIONS = ^tagSTGOPTIONS;

 

const

  STGFMT_STORAGE = 0;

  STGFMT_FILE = 3;

  STGFMT_ANY = 4;

  STGFMT_DOCFILE = 5;

 

function StgOpenStorageEx(const pwcsName: POleStr; grfMode: Longint;

  stgfmt: DWORD; grfAttrs: DWORD; pStgOptions: STGOPTIONS; reserved2: Pointer;

  riid: PGUID; out ppObjectOpen: IStorage): HResult; stdcall;

  external 'ole32.dll';

 

constructor TPropertySet.Create;

begin

  inherited;

  FStreamGUID := FMTID_SummaryInformation;

end;

 

destructor TPropertySet.Destroy;

begin

  Close;

end;

 

procedure TPropertySet.Open;

begin

  Active := True;

end;

 

procedure TPropertySet.Close;

begin

  Active := False;

end;

 

function TPropertySet.GetPropertyByName(APropertyName: WideString): TPropVariant;

var

  ps: PPropSpecArray;

  pv: PPropVariantArray;

begin

  ps := nil;

  pv := nil;

  try

    GetMem(ps, sizeof(TPropSpec));

    GetMem(pv, sizeof(TPropVariant));

    ps[0].ulKind := PRSPEC_LPWSTR;

    ps[0].lpwstr := PWideChar(APropertyName);

    OleCheck(FPropertyStorage.ReadMultiple(1, @ps[0], @pv[0]));

    Result := pv[0];

  finally

    if ps <> nil then

      FreeMem(ps);

    if pv <> nil then

      FreeMem(pv);

  end;

  推荐精品文章

·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089