Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.01;
Скачать: CL | DM;

Вниз

Чтение/запись свойств Word документа челез ОЛЕ линки   Найти похожие ветки 

 
Davinchi   (2004-06-22 13:35) [0]

Помогите разобраться в чем проблема, читать свойства (автор, тема, и т.д.т.п.) из вордовского файла получается без проблем, а при записи тем же методом ничего не происходит....
Вот реальный код моих процедур:

uses ActiveX, ComObj, SysUtils;

function GetDocInf(FileName: TFileName): String;
const
 FMTID_SummaryInformation: TGUID = "{F29F85E0-4FF9-1068-AB91-08002B27B3D9}";
var
 PFileName: PWideChar;
 Storage: IStorage;
 PropSetStg: IPropertySetStorage;
 PropStg: IPropertyStorage;
 ps: PROPSPEC;
 pv: PROPVARIANT;
begin
 PFileName := StringToOleStr(FileName);
 try
   OleCheck(StgOpenStorage(PFileName, nil, STGM_DIRECT or STGM_READWRITE or STGM_SHARE_EXCLUSIVE, nil, 0, Storage));
 finally
   SysFreeString(PFileName);
 end;
 PropSetStg := Storage as IPropertySetStorage;
 OleCheck(PropSetStg.Open(FMTID_SummaryInformation, STGM_DIRECT or STGM_READWRITE or STGM_SHARE_EXCLUSIVE, PropStg));
 ps.ulKind := PRSPEC_PROPID;
 ps.propid := PIDSI_AUTHOR;
 PropStg.ReadMultiple(1, @ps, @pv);
 Result := pv.pszVal;
end;

procedure SetDocInf(FileName: TFileName; Value: String);
const
 FMTID_SummaryInformation: TGUID = "{F29F85E0-4FF9-1068-AB91-08002B27B3D9}";
var
 PFileName: PWideChar;
 Storage: IStorage;
 PropSetStg: IPropertySetStorage;
 PropStg: IPropertyStorage;
 ps: PROPSPEC;
 pv: PROPVARIANT;
begin
 PFileName := StringToOleStr(FileName);
 try
   OleCheck(StgOpenStorage(PFileName, nil, STGM_DIRECT or STGM_READWRITE or STGM_SHARE_EXCLUSIVE, nil, 0, Storage));
 finally
   SysFreeString(PFileName);
 end;
 PropSetStg := Storage as IPropertySetStorage;
 OleCheck(PropSetStg.Open(FMTID_SummaryInformation, STGM_DIRECT or STGM_READWRITE or STGM_SHARE_EXCLUSIVE, PropStg));
 ps.ulKind := PRSPEC_PROPID;
 ps.propid := PIDSI_AUTHOR;
 pv.pszVal := PChar(Value);
 PropStg.WriteMultiple(1, @ps, @pv, PIDSI_AUTHOR);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 Edit1.Text := GetDocInf(Filename.FileName);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 SetDocInf(Filename.FileName, Edit1.Text);
end;


 
User_Name   (2004-06-23 11:49) [1]

Всегда такие вещи записывал так: т.е. открывал через ОLE и

WrdDoc.BuiltInProperty [wdPropertyAuthor] := ...
WrdDoc.BuiltInProperty [wdPropertyComments] :=...



Страницы: 1 вся ветка

Текущий архив: 2004.08.01;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.031 c
14-1089965311
IgorG
2004-07-16 12:08
2004.08.01
узнать имя и пароль пользователя


14-1089524771
Perwomai
2004-07-11 09:46
2004.08.01
В чём причина бедности в развиваюзихся странах?


14-1089373794
_DS
2004-07-09 15:49
2004.08.01
Библиотека


1-1090151824
Вопрос
2004-07-18 15:57
2004.08.01
PenPos или "как нарисовать линию"


1-1089893971
Владимир
2004-07-15 16:19
2004.08.01
Ограничение объёма при копировании из TMemo в Clipboard