This works.
 
function GetExeVersionStr: string;
var
  Dummy: DWORD;
  FileVerInfoSize: integer;
  Buffer: PChar;
  PFFI: PVSFixedFileInfo;
  FFISize: DWORD;
begin
  FileVerInfoSize := GetFileVersionInfoSize(PChar(Application.EXEName), Dummy);
  if FileVerInfoSize = 0 then
  begin
    Result := '';
    Exit;
  end;
  GetMem(Buffer, FileVerInfoSize);
  try
    GetFileVersionInfo(PChar(Application.EXEName), 0,
    FileVerInfoSize, Buffer);
    VerQueryValue(Buffer, '\', pointer(PFFI), FFISize);
    Result := Format('%d.%d.%d build %d',
    [HiWord(PFFI^.dwFileVersionMS),
    LoWord(PFFI^.dwFileVersionMS),
    HiWord(PFFI^.dwFileVersionLS),
    LoWord(PFFI^.dwFileVersionLS)]);
  finally
    FreeMem(Buffer, FileVerInfoSize);
  end;
end;
Regards,
Laurence Bevan
 
 

Reply via email to