发信人: kingron( ) 
整理人: teleme(2001-05-08 12:35:23), 站内信件
 | 
 
 
文件的大小的等信息很简单,我就不说了。
 下面的代码调试通过了:
 unit Unit1;
 
 interface
 
 uses
   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
   StdCtrls;
 
 type
   TForm1 = class(TForm)
     Button1: TButton;
     OpenDialog1: TOpenDialog;
     ListBox1: TListBox;
     procedure Button1Click(Sender: TObject);
   private
     { Private declarations }
   public
     { Public declarations }
   end;
 
 var
   Form1: TForm1;
 
 implementation
 
 {$R *.DFM}
 type
   TFileInfo = packed record
     CommpanyName: string;
     FileDescription: string;
     FileVersion: string;
     InternalName: string;
     LegalCopyright: string;
     LegalTrademarks: string;
     OriginalFileName: string;
     ProductName: string;
     ProductVersion: string;
     Comments: string;
     UserDefineValue: string;
   end;
 
 function GetFileVersionInfomation(const FileName: string; var info: TFileInfo):
   boolean;
 var
   VersionInfo: Pointer;
   InfoSize: DWORD;
   InfoPointer: Pointer;
   Translation: Pointer;
   VersionValue: string;
   unused: DWORD;
 begin
   unused := 0;
   Result := False;
   InfoSize := GetFileVersionInfoSize(pchar(FileName), unused);
   if InfoSize > 0 then
   begin
     GetMem(VersionInfo, InfoSize);
     Result := GetFileVersionInfo(pchar(FileName), 0, InfoSize, VersionInfo);
     if Result then
     begin
       VerQueryValue(VersionInfo, '\VarFileInfo\Translation', Translation, InfoSize);
       VersionValue := '\StringFileInfo\' + IntToHex(LoWord(Longint(Translation^)), 4) +
         IntToHex(HiWord(Longint(Translation^)), 4) + '\';
       VerQueryValue(VersionInfo, pchar(VersionValue + 'CompanyName'), InfoPointer, InfoSize);
       info.CommpanyName := string(pchar(InfoPointer));
       VerQueryValue(VersionInfo, pchar(VersionValue + 'FileDescription'), InfoPointer, InfoSize);
       info.FileDescription := string(pchar(InfoPointer));
       VerQueryValue(VersionInfo, pchar(VersionValue + 'FileVersion'), InfoPointer, InfoSize);
       info.FileVersion := string(pchar(InfoPointer));
       VerQueryValue(VersionInfo, pchar(VersionValue + 'InternalName'), InfoPointer, InfoSize);
       info.InternalName := string(pchar(InfoPointer));
       VerQueryValue(VersionInfo, pchar(VersionValue + 'LegalCopyright'), InfoPointer, InfoSize);
       info.LegalCopyright := string(pchar(InfoPointer));
       VerQueryValue(VersionInfo, pchar(VersionValue + 'LegalTrademarks'), InfoPointer, InfoSize);
       info.LegalTrademarks := string(pchar(InfoPointer));
       VerQueryValue(VersionInfo, pchar(VersionValue + 'OriginalFileName'), InfoPointer, InfoSize);
       info.OriginalFileName := string(pchar(InfoPointer));
       VerQueryValue(VersionInfo, pchar(VersionValue + 'ProductName'), InfoPointer, InfoSize);
       info.ProductName := string(pchar(InfoPointer));
       VerQueryValue(VersionInfo, pchar(VersionValue + 'ProductVersion'), InfoPointer, InfoSize);
       info.ProductVersion := string(pchar(InfoPointer));
       VerQueryValue(VersionInfo, pchar(VersionValue + 'Comments'), InfoPointer, InfoSize);
       info.Comments := string(pchar(InfoPointer));
     end;
     FreeMem(VersionInfo);
   end;
 end;
 
 procedure TForm1.Button1Click(Sender: TObject);
 var
   info: TFileInfo;
 begin
   if OpenDialog1.Execute then
   begin
     if GetFileVersionInfomation(opendialog1.FileName, info) then
     begin
       Listbox1.Items.Add(OpenDialog1.FileName);
       ListBox1.Items.Add('Comments:' + info.Comments);
       ListBox1.Items.Add('CommpanyName:' + info.CommpanyName);
       ListBox1.Items.Add('FileDescription:' + info.FileDescription);
       ListBox1.Items.Add('FileVersion:' + info.FileVersion);
       ListBox1.Items.Add('InternalName:' + info.InternalName);
       ListBox1.Items.Add('LegalCopyright:' + info.LegalCopyright);
       ListBox1.Items.Add('LegalTrademarks:' + info.LegalTrademarks);
       ListBox1.Items.Add('OriginalFileName:' + info.OriginalFileName);
       ListBox1.Items.Add('ProductName:' + info.ProductName);
       ListBox1.Items.Add('ProductVersion:' + info.ProductVersion);
     end;
   end;
 end;
 
 end.
 
  ---- ██████   没有你,赢了世界又如何?
 █┏━━┓█       没有最好,只有更好
 █┃之金┃█   广州社区Delphi版直达快车
 █┃印龍┃█       技术问题请勿寄到信箱,此类信件将被忽略
 █┗━━┛█   Good Good Study,Day Day Up
 ██████       一场幽梦同谁近,千古情人我独痴    | 
 
 
 |