怎么得到*.dll/*.exe文件的Version?
解决方案 »
- 在设计期,如何隐藏基类窗体继承下来的组件?如 ImageList等
- 怎么样创建一个Excel文件,并对其添加数据!
- 请问谁有 INSTALLSHIELD EXPRESS 4.0 EVALUATION 的序列号?
- 怎样得到listview里的最后一列的值?谢谢
- 什么是系统集成?
- 有谁能帮助我删除MDAC2.7(Win2000)?急!!!
- 关于API的问题!急!
- 关于图像字段的存取问题!解决后马上给分!!!!
- <Delphi 5.X ADO_MTS_COM+高级程序设计篇>那里能下载。有分给哦!!
- 难题!!!
- 大家能介绍一下用serversocket实现一对多通讯时如何区分各个数据包的来源?
- 如何实现点对点的基于inter net 的文件的传输
标题:取得文件的版本信息
说明:编译程序的时候不要忘记加上版本信息
设计:Zswang
日期:2002-09-12
支持:[email protected]
//*)///////Begin Source
type
TFileVersionInfomation = record
rCommpanyName: string;
rFileDescription: string;
rFileVersion: string;
rInternalName: string;
rLegalCopyright: string;
rLegalTrades: string;
rOriginalFileName: string;
rProductName: string;
rProductVersion: string;
rComments: string;
rVsFixedFileInfo: VS_FIXEDFILEINFO;
rDefineValue: string;
end;function GetFileVersionInfomation(mFileName: TFileName;
var nFileVersionInfomation: TFileVersionInfomation;
mDefineName: string = ''): Boolean;
var
vHandle: Cardinal;
vInfoSize: Cardinal;
vVersionInfo: Pointer;
vTranslation: Pointer;
vVersionValue: string;
vInfoPointer: Pointer;
begin
Result := False;
vInfoSize := GetFileVersionInfoSize(PChar(mFileName), vHandle); //取得文件版本信息空间及资源句柄
FillChar(nFileVersionInfomation, SizeOf(nFileVersionInfomation), 0); //初始化返回信息
if vInfoSize <= 0 then Exit; //安全检查 GetMem(vVersionInfo, vInfoSize); //分配资源
with nFileVersionInfomation do try
if not GetFileVersionInfo(PChar(mFileName),
vHandle, vInfoSize, vVersionInfo) then Exit;
VerQueryValue(vVersionInfo, '\VarFileInfo\Translation',
vTranslation, vInfoSize);
vVersionValue := Format('\StringFileInfo\%.4x%.4x\',
[LOWORD(Longint(vTranslation^)), HIWORD(Longint(vTranslation^))]);
VerQueryValue(vVersionInfo, PChar(vVersionValue + 'CompanyName'),
vInfoPointer, vInfoSize);
rCommpanyName := PChar(vInfoPointer);
VerQueryValue(vVersionInfo, PChar(vVersionValue + 'FileDescription'),
vInfoPointer, vInfoSize);
rFileDescription := PChar(vInfoPointer);
VerQueryValue(vVersionInfo, PChar(vVersionValue + 'FileVersion'),
vInfoPointer, vInfoSize);
rFileVersion := PChar(vInfoPointer);
VerQueryValue(vVersionInfo, PChar(vVersionValue + 'InternalName'),
vInfoPointer, vInfoSize);
rInternalName := PChar(vInfoPointer);
VerQueryValue(vVersionInfo, PChar(vVersionValue + 'LegalCopyright'),
vInfoPointer, vInfoSize);
rLegalCopyright := PChar(vInfoPointer);
VerQueryValue(vVersionInfo, PChar(vVersionValue + 'LegalTrades'),
vInfoPointer, vInfoSize);
rLegalTrades := PChar(vInfoPointer);
VerQueryValue(vVersionInfo, PChar(vVersionValue + 'OriginalFileName'),
vInfoPointer, vInfoSize);
rOriginalFileName := PChar(vInfoPointer);
VerQueryValue(vVersionInfo, PChar(vVersionValue + 'ProductName'),
vInfoPointer, vInfoSize);
rProductName := PChar(vInfoPointer);
VerQueryValue(vVersionInfo, PChar(vVersionValue + 'ProductVersion'),
vInfoPointer, vInfoSize);
rProductVersion := PChar(vInfoPointer);
VerQueryValue(vVersionInfo, PChar(vVersionValue + 'Comments'),
vInfoPointer, vInfoSize);
rComments := PChar(vInfoPointer);
VerQueryValue(vVersionInfo, '\', vInfoPointer, vInfoSize);
rVsFixedFileInfo := TVSFixedFileInfo(vInfoPointer^);
if mDefineName <> '' then begin
VerQueryValue(vVersionInfo, PChar(vVersionValue + mDefineName),
vInfoPointer, vInfoSize);
rDefineValue := PChar(vInfoPointer);
end else rDefineValue := '';
finally
FreeMem(vVersionInfo, vInfoSize);
end;
Result := True;
end; { GetFileVersionInfomation }
///////End Source///////Begin Demo
procedure TForm1.Button1Click(Sender: TObject);
var
vFileVersionInfomation: TFileVersionInfomation;
begin
if GetFileVersionInfomation(Application.ExeName, vFileVersionInfomation) then
with vFileVersionInfomation do begin
Memo1.Lines.Values['rCommpanyName'] := rCommpanyName;
Memo1.Lines.Values['rFileDescription'] := rFileDescription;
Memo1.Lines.Values['rFileVersion'] := rFileVersion;
Memo1.Lines.Values['rInternalName'] := rInternalName;
Memo1.Lines.Values['rLegalCopyright'] := rLegalCopyright;
Memo1.Lines.Values['rLegalTrades'] := rLegalTrades;
Memo1.Lines.Values['rOriginalFileName'] := rOriginalFileName;
Memo1.Lines.Values['rProductName'] := rProductName;
Memo1.Lines.Values['rProductVersion'] := rProductVersion;
Memo1.Lines.Values['rComments'] := rComments;
// Memo1.Lines.Values['rVsFixedFileInfo'] := rVsFixedFileInfo;//
Memo1.Lines.Values['rDefineValue'] := rDefineValue;
end;
end;
///////End Demo