Delphi 2010 から Delphi XE7 にプログラムを更新しています。下に示すコードは、Unicode に適応し、GetFileVersionInfoSize の代わりに GetFileVersionInfoW を使用する必要があるため、動作を停止しました。
以下に示す、私が使用していた関数の最新バージョンを開発した人はいますか? これまでウェブ上で例を見つけることができず、低レベルの 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;