Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как узнать автора файла документа

Delphi , Технологии , OLE Automation MSOffice

Как узнать автора файла документа

Автор: Asmith

Вот простой пример, подробности в MSDN:


uses ActiveX, ComObj, SysUtils;

function GetSummaryInfAuthor(FileName: TFileName): string;
var
 PFileName: PWideChar;
 Storage: IStorage;
 PropSetStg: IPropertySetStorage;
 PropStg: IPropertyStorage;
 ps: PROPSPEC;
 pv: PROPVARIANT;
const
 FMTID_SummaryInformation: TGUID = '{F29F85E0-4FF9-1068-AB91-08002B27B3D9}';
begin
 PFileName := StringToOleStr(FileName);
 try
   // Open compound storage
   OleCheck(StgOpenStorage(PFileName, nil,
   STGM_DIRECT or STGM_READ or STGM_SHARE_EXCLUSIVE, nil, 0, Storage));
 finally
   SysFreeString(PFileName);
 end;

 // Summary information is in a stream under the root storage
 PropSetStg := Storage as IPropertySetStorage;
 // Get the IPropertyStorage
 OleCheck(PropSetStg.Open(FMTID_SummaryInformation,
 STGM_DIRECT or STGM_READ or STGM_SHARE_EXCLUSIVE, PropStg));

 // We want the author property value
 ps.ulKind := PRSPEC_PROPID;
 ps.propid := PIDSI_AUTHOR;

 // Read this property
 PropStg.ReadMultiple(1, @ps, @pv);

 Result := pv.pszVal;
end;

Код, который вы предоставили, - это функция Delphi, которая извлекает автора файла с помощью потока информационных данных в Windows. Автор может быть найден в свойстве "SummaryInformation" в свойствах.

Следующий шаги:

  1. Он открывает указанный файл как объект хранения.
  2. Он получает хранение свойств из открытого хранения.
  3. Он открывает хранение свойств для свойства "SummaryInformation".
  4. Он читает значение свойства автора с помощью флагов PROPID и PRSPEC_PROPID.

Вот пример использования этой функции:

procedure TForm1.Button1Click(Sender: TObject);
var
  Author: string;
begin
  Author := GetSummaryInfAuthor('C:\Path\To\Your\File.docx');
  ShowMessage(Author);
end;

Обратите внимание, что эта функция требует, чтобы файл был Microsoft Office документом (doc, docx, ppt, pptx, xls, xlsx), потому что она использует свойство "SummaryInformation", которое является специфичным для этих типов файлов.

Также это код может не работать для всех документов, потому что не все документы содержат информацию о авторе. Кроме того, некоторые документы могут иметь null или пустое значение автора.

Вы можете также проверить расширение файла перед вызовом функции, чтобы убедиться, что это поддерживаемый тип файла:

function IsSupportedFileExtension(FileName: string): boolean;
begin
  // Список поддерживаемых расширений
  const SupportedExtensions: array ['doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx'] of Boolean = (True, True, True, True, True, True);

  // Проверка расширения файла
  Result := False;
  for i := Low(SupportedExtensions) to High(SupportedExtensions) do
    if UpperCase(ExtractFileExt(FileName)) = UpperCase(SupportedExtensions[i]) then
    begin
      Result := True;
      Break;
    end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Author: string;
begin
  if IsSupportedFileExtension('C:\Path\To\Your\File.docx') then
    Author := GetSummaryInfAuthor('C:\Path\To\Your\File.docx')
  else
    Author := 'Unsupported file type';
  ShowMessage(Author);
end;

В этом примере функция IsSupportedFileExtension проверяет, является ли файл поддерживаемым типом. Если файл не является поддерживаемым типом, то функция возвращает сообщение "Unsupported file type".

Автор файла документа можно узнать с помощью функции GetSummaryInfAuthor из ActiveX-библиотеки, которая использует интерфейсы IStorage и IPropertyStorage для чтения свойства автора.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: OLE Automation MSOffice ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 11:30:10/0.0039608478546143/0