Delphi2010怎样获取程序内部自身版本?
2016-04-09 11:15
429 查看
用原来的GetFileVersionInfo仅仅能获取Delpi7的程序版本,用在Delphi2010中就无论用了
//------ 获取文件版本
function F_GetFileVersion(FN: string): string;
var
Temp, InfoSize: Cardinal;
FileData: Pointer;
FileInfo: PVSFixedFileInfo;
begin
Result := '';
if not FileExists(FN) then Exit;
InfoSize := GetFileVersionInfoSize(PChar(FN), Temp);
if InfoSize = 0 then Exit; //没有版本
FileData := GetMemory(InfoSize);
try
if not GetFileVersionInfo(PChar(FN), 0, InfoSize, FileData) then Exit;
if not VerQueryValue(FileData, '\', Pointer(FileInfo), Temp) then Exit;
Result := Format('%d.%d.%d.%d',
[FileInfo.dwFileVersionMS div $10000,
FileInfo.dwFileVersionMS mod $10000,
FileInfo.dwFileVersionLS div $10000,
FileInfo.dwFileVersionLS mod $10000]);
finally
FreeMemory(FileData)
end;
解决方法是用第三方控件Rave。里面有个RzVersionInofo,放上去编译的时候勾选Including version information in project,就能够获取版本了,获取方法:Showmessage(RzVersionInofo1.FileVersion);
//------ 获取文件版本
function F_GetFileVersion(FN: string): string;
var
Temp, InfoSize: Cardinal;
FileData: Pointer;
FileInfo: PVSFixedFileInfo;
begin
Result := '';
if not FileExists(FN) then Exit;
InfoSize := GetFileVersionInfoSize(PChar(FN), Temp);
if InfoSize = 0 then Exit; //没有版本
FileData := GetMemory(InfoSize);
try
if not GetFileVersionInfo(PChar(FN), 0, InfoSize, FileData) then Exit;
if not VerQueryValue(FileData, '\', Pointer(FileInfo), Temp) then Exit;
Result := Format('%d.%d.%d.%d',
[FileInfo.dwFileVersionMS div $10000,
FileInfo.dwFileVersionMS mod $10000,
FileInfo.dwFileVersionLS div $10000,
FileInfo.dwFileVersionLS mod $10000]);
finally
FreeMemory(FileData)
end;
解决方法是用第三方控件Rave。里面有个RzVersionInofo,放上去编译的时候勾选Including version information in project,就能够获取版本了,获取方法:Showmessage(RzVersionInofo1.FileVersion);
相关文章推荐
- delphi 实现采集
- TControlStyle.csParentBackground的作用(附Delphi里的所有例子,待续)
- 用Delphi实现文件关联
- Delphi 7使用自定义图标关联文件类型
- Delphi 注册文件类型 设置文件图标
- delphi的TFileStream 内存流
- Delphi 实现Ini文件参数与TEdit和TCheckBox绑定(TSimpleParam)
- delphi 域名转ip并判断ip是否可以联通
- Failed to load IDE add in 'C:\Program Files\Delphi_2007\bin\Borland.Studio.Together.dll'.解决办法 转
- delphi的取整函数round、trunc、ceil和floor
- Delphi中double类型真正实现四舍五入(保留两位)
- delphi各个版本编译开关值
- Delphi下实现全屏快速找图找色
- Delphi在创建和使用DLL的时候如果使用到string,请引入ShareMem单元
- delphi 中字符串与16进制、10进制转换函数
- 十六进制字符串转化成字符串输出HexToStr(Delphi版、C#版)
- Delphi 实现16进制转字符串及字符串(中文)转16进制
- 关于Delphi字符串内存泄露的问题
- 深入了解Delphi 7中的四种消息框
- Windows的自带控件(比如TButton)大多数消息都由它自己处理,Delphi覆盖了那么多WM_函数优先级较低,一般用不上