我正在将程序从 Delphi 2010 更新到 Delphi XE7。下面显示的代码已停止工作,因为我认为需要适应 unicode 并使用 GetFileVersionInfoW 而不是 GetFileVersionInfoSize。
有没有人开发了我正在使用的功能的更新版本,如下所示?到目前为止,我在网上找不到任何示例,恐怕低级 Windows 编程有点超出我的能力。
谢谢你的帮助!
下面的旧代码不再适用于 Delphi XE2 及更高版本:仅返回 1.0.0.0
procedure GetBuildInfo(var V1, V2, V3, V4: Word);
{From Steve Schafer }
var
VerInfoSize: DWORD;
VerInfo: pointer;
VerValueSize: DWORD;
VerValue: PVSFixedFileInfo;
Dummy: DWORD;
begin
VerInfoSize := GetFileVersionInfoSize(PChar(ParamStr(0)), Dummy);
GetMem(VerInfo, VerInfoSize);
GetFileVersionInfo(PChar(ParamStr(0)), 0, VerInfoSize, VerInfo);
VerQueryValue(VerInfo, '\', pointer(VerValue), VerValueSize);
with VerValue^ do
begin
V1 := dwFileVersionMS shr 16;
V2 := dwFileVersionMS and $FFFF;
V3 := dwFileVersionLS shr 16;
V4 := dwFileVersionLS and $FFFF;
end;
FreeMem(VerInfo, VerInfoSize);
end;