Componentes.Terceros.jcl/official/1.100/examples/windows/filesummary/FileSummaryDemoMain.pas

310 lines
12 KiB
ObjectPascal

unit FileSummaryDemoMain;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, FileCtrl, ActiveX, JclNTFS;
type
TFormMain = class(TForm)
DriveComboBox1: TDriveComboBox;
Memo1: TMemo;
FileListBox1: TFileListBox;
DirectoryListBox1: TDirectoryListBox;
procedure FileListBox1Change(Sender: TObject);
private
FFileSummary: TJclFileSummary;
procedure UpdateFileSummary(const FileName: string);
public
end;
var
FormMain: TFormMain;
implementation
{$R *.dfm}
uses
JclSysUtils;
procedure TFormMain.FileListBox1Change(Sender: TObject);
begin
if FileListBox1.FileName <> '' then
UpdateFileSummary(FileListBox1.FileName);
end;
procedure TFormMain.UpdateFileSummary(const FileName: string);
function FileTimeToString(const FileTime: TFileTime): string;
var
ASystemTime: TSystemTime;
begin
if FileTimeToSystemTime(FileTime, ASystemTime) then
Result := Format('%d/%d/%d %d:%d:%d', [ASystemTime.wYear, ASystemTime.wMonth, ASystemTime.wDay,
ASystemTime.wHour, ASystemTime.wMinute, ASystemTime.wSecond])
else
Result := '';
end;
var
AFilePropertySet: TJclFilePropertySet;
AFileSummaryInformation: TJclFileSummaryInformation;
ADocumentSummaryInformation: TJclDocSummaryInformation;
AMediaFileSummaryInformation: TJclMediaFileSummaryInformation;
AMSISummaryInformation: TJclMSISummaryInformation;
AVideoSummaryInformation: TJclVideoSummaryInformation;
AAudioSummaryInformation: TJclAudioSummaryInformation;
begin
Memo1.Lines.Clear;
FFileSummary := TJclFileSummary.Create(FileName, fsaRead, fssDenyAll);
try
FFileSummary.GetPropertySet(TJclFileSummaryInformation, AFileSummaryInformation);
if Assigned(AFileSummaryInformation) then
try
Memo1.Lines.Add('File summary');
Memo1.Lines.Add(' Title ' + AFileSummaryInformation.Title);
Memo1.Lines.Add(' Subject ' + AFileSummaryInformation.Subject);
Memo1.Lines.Add(' Author ' + AFileSummaryInformation.Author);
Memo1.Lines.Add(' Keywords ' + AFileSummaryInformation.KeyWords);
Memo1.Lines.Add(' Comments ' + AFileSummaryInformation.Comments);
Memo1.Lines.Add(' Template ' + AFileSummaryInformation.Template);
Memo1.Lines.Add(' Last author ' + AFileSummaryInformation.LastAuthor);
Memo1.Lines.Add(' Revision numer ' + AFileSummaryInformation.RevNumber);
Memo1.Lines.Add(' Edit time ' + FileTimeToString(AFileSummaryInformation.EditTime));
Memo1.Lines.Add(' Last printed time ' + FileTimeToString(AFileSummaryInformation.LastPrintedTime));
Memo1.Lines.Add(' Creation time ' + FileTimeToString(AFileSummaryInformation.CreationTime));
Memo1.Lines.Add(' Last save time ' + FileTimeToString(AFileSummaryInformation.LastSaveTime));
Memo1.Lines.Add(' Page count ' + IntToStr(AFileSummaryInformation.PageCount));
Memo1.Lines.Add(' Word count ' + IntToStr(AFileSummaryInformation.WordCount));
Memo1.Lines.Add(' Char count ' + IntToStr(AFileSummaryInformation.CharCount));
//AFileSummaryInformation.Thumnail
Memo1.Lines.Add(' App name ' + AFileSummaryInformation.AppName);
Memo1.Lines.Add(' Security ' + IntToStr(AFileSummaryInformation.Security));
finally
AFileSummaryInformation.Free;
end;
FFileSummary.GetPropertySet(TJclDocSummaryInformation, ADocumentSummaryInformation);
if Assigned(ADocumentSummaryInformation) then
try
Memo1.Lines.Add('Document summary');
Memo1.Lines.Add(' Category ' + ADocumentSummaryInformation.Category);
Memo1.Lines.Add(' Pres format ' + ADocumentSummaryInformation.PresFormat);
Memo1.Lines.Add(' Byte count ' + IntToStr(ADocumentSummaryInformation.ByteCount));
Memo1.Lines.Add(' Line count ' + IntToStr(ADocumentSummaryInformation.LineCount));
Memo1.Lines.Add(' Par count ' + IntToStr(ADocumentSummaryInformation.ParCount));
Memo1.Lines.Add(' Slide count ' + IntToStr(ADocumentSummaryInformation.SlideCount));
Memo1.Lines.Add(' Note count ' + IntToStr(ADocumentSummaryInformation.NoteCount));
Memo1.Lines.Add(' Hidden count ' + IntToStr(ADocumentSummaryInformation.HiddenCount));
Memo1.Lines.Add(' MM Clip count ' + IntToStr(ADocumentSummaryInformation.MMClipCount));
Memo1.Lines.Add(' Scale ' + BooleanToStr(ADocumentSummaryInformation.Scale));
//ADocumentSummaryInformation.HeadingPair
//ADocumentSummaryInformation.DocParts
Memo1.Lines.Add(' Manager ' + ADocumentSummaryInformation.Manager);
Memo1.Lines.Add(' Company ' + ADocumentSummaryInformation.Company);
Memo1.Lines.Add(' Links dirty ' + BooleanToStr(ADocumentSummaryInformation.LinksDirty));
finally
ADocumentSummaryInformation.Free;
end;
FFileSummary.GetPropertySet(TJclMediaFileSummaryInformation, AMediaFileSummaryInformation);
if Assigned(AMediaFileSummaryInformation) then
try
Memo1.Lines.Add('Media file');
Memo1.Lines.Add(' Supplier ' + AMediaFileSummaryInformation.Supplier);
Memo1.Lines.Add(' Source ' + AMediaFileSummaryInformation.Source);
Memo1.Lines.Add(' Sequence no ' + AMediaFileSummaryInformation.SequenceNo);
Memo1.Lines.Add(' Project ' + AMediaFileSummaryInformation.Project);
Memo1.Lines.Add(' Status ' + IntToStr(AMediaFileSummaryInformation.Status));
Memo1.Lines.Add(' Owner ' + AMediaFileSummaryInformation.Owner);
Memo1.Lines.Add(' Rating ' + AMediaFileSummaryInformation.Rating);
Memo1.Lines.Add(' Production ' + FileTimeToString(AMediaFileSummaryInformation.Production));
Memo1.Lines.Add(' Copyright ' + AMediaFileSummaryInformation.Copyright);
finally
AMediaFileSummaryInformation.Free;
end;
FFileSummary.GetPropertySet(TJclMSISummaryInformation, AMSISummaryInformation);
if Assigned(AMSISummaryInformation) then
try
Memo1.Lines.Add('MSI summary');
Memo1.Lines.Add(' Version ' + IntToStr(AMSISummaryInformation.Version));
Memo1.Lines.Add(' Source ' + IntToStr(AMSISummaryInformation.Source));
Memo1.Lines.Add(' Restrict ' + IntToStr(AMSISummaryInformation.Restrict));
finally
AMSISummaryInformation.Free;
end;
FFileSummary.GetPropertySet(TJclShellSummaryInformation, AFilePropertySet);
if Assigned(AFilePropertySet) then
try
Memo1.Lines.Add('Shell summary');
finally
AFilePropertySet.Free;
end;
FFileSummary.GetPropertySet(TJclStorageSummaryInformation, AFilePropertySet);
if Assigned(AFilePropertySet) then
try
Memo1.Lines.Add('Storage summary');
finally
AFilePropertySet.Free;
end;
FFileSummary.GetPropertySet(TJclImageSummaryInformation, AFilePropertySet);
if Assigned(AFilePropertySet) then
try
Memo1.Lines.Add('Image summary');
finally
AFilePropertySet.Free;
end;
FFileSummary.GetPropertySet(TJclDisplacedSummaryInformation, AFilePropertySet);
if Assigned(AFilePropertySet) then
try
Memo1.Lines.Add('Displaced summary');
finally
AFilePropertySet.Free;
end;
FFileSummary.GetPropertySet(TJclBriefCaseSummaryInformation, AFilePropertySet);
if Assigned(AFilePropertySet) then
try
Memo1.Lines.Add('Briefcase summary');
finally
AFilePropertySet.Free;
end;
FFileSummary.GetPropertySet(TJclMiscSummaryInformation, AFilePropertySet);
if Assigned(AFilePropertySet) then
try
Memo1.Lines.Add('Misc summary');
finally
AFilePropertySet.Free;
end;
FFileSummary.GetPropertySet(TJclWebViewSummaryInformation, AFilePropertySet);
if Assigned(AFilePropertySet) then
try
Memo1.Lines.Add('Webview summary');
finally
AFilePropertySet.Free;
end;
FFileSummary.GetPropertySet(TJclMusicSummaryInformation, AFilePropertySet);
if Assigned(AFilePropertySet) then
try
Memo1.Lines.Add('Music summary');
finally
AFilePropertySet.Free;
end;
FFileSummary.GetPropertySet(TJclDRMSummaryInformation, AFilePropertySet);
if Assigned(AFilePropertySet) then
try
Memo1.Lines.Add('DRM summary');
finally
AFilePropertySet.Free;
end;
FFileSummary.GetPropertySet(TJclVideoSummaryInformation, AVideoSummaryInformation);
if Assigned(AVideoSummaryInformation) then
try
Memo1.Lines.Add('Video summary');
Memo1.Lines.Add(' Stream name ' + AVideoSummaryInformation.StreamName);
Memo1.Lines.Add(' Width ' + IntToStr(AVideoSummaryInformation.Width));
Memo1.Lines.Add(' Height ' + IntToStr(AVideoSummaryInformation.Height));
Memo1.Lines.Add(' Time length(ms) ' + IntToStr(AVideoSummaryInformation.TimeLength));
Memo1.Lines.Add(' Frame count ' + IntToStr(AVideoSummaryInformation.FrameCount));
Memo1.Lines.Add(' Frame rate ' + IntToStr(AVideoSummaryInformation.FrameRate));
Memo1.Lines.Add(' Data rate ' + IntToStr(AVideoSummaryInformation.DataRate));
Memo1.Lines.Add(' Sample size ' + IntToStr(AVideoSummaryInformation.SampleSize));
Memo1.Lines.Add(' Compression ' + AVideoSummaryInformation.Compression);
Memo1.Lines.Add(' Stream number ' + IntToStr(AVideoSummaryInformation.StreamNumber));
finally
AVideoSummaryInformation.Free;
end;
FFileSummary.GetPropertySet(TJclAudioSummaryInformation, AAudioSummaryInformation);
if Assigned(AAudioSummaryInformation) then
try
Memo1.Lines.Add('Audio summary');
Memo1.Lines.Add(' Format ' + AAudioSummaryInformation.Format);
Memo1.Lines.Add(' Time length ' + IntToStr(AAudioSummaryInformation.TimeLength));
Memo1.Lines.Add(' Average data rate ' + IntToStr(AAudioSummaryInformation.AverageDataRate));
Memo1.Lines.Add(' Sample rate ' + IntToStr(AAudioSummaryInformation.SampleRate));
Memo1.Lines.Add(' Sample size ' + IntToStr(AAudioSummaryInformation.SampleSize));
Memo1.Lines.Add(' Channel count ' + IntToStr(AAudioSummaryInformation.ChannelCount));
Memo1.Lines.Add(' Stream number ' + IntToStr(AAudioSummaryInformation.StreamNumber));
Memo1.Lines.Add(' Stream name ' + AAudioSummaryInformation.StreamName);
Memo1.Lines.Add(' Compression ' + AAudioSummaryInformation.Compression);
finally
AAudioSummaryInformation.Free;
end;
FFileSummary.GetPropertySet(TJclControlPanelSummaryInformation, AFilePropertySet);
if Assigned(AFilePropertySet) then
try
Memo1.Lines.Add('Control panel summary');
finally
AFilePropertySet.Free;
end;
FFileSummary.GetPropertySet(TJclVolumeSummaryInformation, AFilePropertySet);
if Assigned(AFilePropertySet) then
try
Memo1.Lines.Add('Volume summary');
finally
AFilePropertySet.Free;
end;
FFileSummary.GetPropertySet(TJclShareSummaryInformation, AFilePropertySet);
if Assigned(AFilePropertySet) then
try
Memo1.Lines.Add('Share summary');
finally
AFilePropertySet.Free;
end;
FFileSummary.GetPropertySet(TJclLinkSummaryInformation, AFilePropertySet);
if Assigned(AFilePropertySet) then
try
Memo1.Lines.Add('Link summary');
finally
AFilePropertySet.Free;
end;
FFileSummary.GetPropertySet(TJclQuerySummaryInformation, AFilePropertySet);
if Assigned(AFilePropertySet) then
try
Memo1.Lines.Add('Query summary');
finally
AFilePropertySet.Free;
end;
FFileSummary.GetPropertySet(TJclImageInformation, AFilePropertySet);
if Assigned(AFilePropertySet) then
try
Memo1.Lines.Add('Image');
finally
AFilePropertySet.Free;
end;
FFileSummary.GetPropertySet(TJclJpegSummaryInformation, AFilePropertySet);
if Assigned(AFilePropertySet) then
try
Memo1.Lines.Add('Jpeg summary');
finally
AFilePropertySet.Free;
end;
finally
FreeAndNil(FFileSummary);
end;
if Memo1.Lines.Count = 0 then
Memo1.Lines.Add('No properties');
end;
end.