获取当前程序的版本号。

zhangzhen_927116 2012-12-13 03:16:47
function GetFileVersion(fn: string; var ma, mi, r ,b: integer):boolean;//得到本程序的版本号
var
buf, p: pChar;
sver: ^VS_FIXEDFILEINFO ;
i: LongWord;
begin
i:= GetFileVersionInfoSize(pchar(fn), i);
new(sver);
p:= pchar(sver);
GetMem(buf, i);
ZeroMemory(buf, i);
result:= false;
if GetFileVersionInfo(pchar(fn), 0, 4096, pointer(buf)) then
if VerQueryValue(buf, '/', pointer(sver), i) then begin
ma:= sVer^.dwFileVersionMS shr 16;
mi:= sver^.dwFileVersionMS and $0000ffff;
r:= sver^.dwFileVersionLS shr 16;
b:= sver^.dwFileVersionLS and $0000ffff;
result:= true;
end;
Dispose(p);
FreeMem(buf);
end;

这是在网上找到的一段代码。但是不知道什么意思。求帮忙解释下。调用怎么调用的?
...全文
255 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jaxdong 2012-12-17
  • 打赏
  • 举报
回复
那这个你能看懂不?

function GetFileVersionString(const AFileName: String): String;
var
  FileName: string;
  InfoSize, Wnd: DWORD;
  VerBuf: Pointer;
  FI: PVSFixedFileInfo;
  VerSize: DWORD;
begin
  Result := '';
  FileName := AFileName;
  UniqueString(FileName);
  InfoSize := GetFileVersionInfoSize(PChar(FileName), Wnd);
  if InfoSize <> 0 then
  begin
    GetMem(VerBuf, InfoSize);
    try
      if GetFileVersionInfo(PChar(FileName), Wnd, InfoSize, VerBuf) then
        if VerQueryValue(VerBuf, '\', Pointer(FI), VerSize) then
        begin
          Result:= InttoStr(FI.dwFileVersionMS div $10000)+'.'
            +IntToStr(FI.dwFileVersionMS mod $10000)+'.'
            +IntToStr(FI.dwFileVersionLS div $10000)+'.'
            +IntToStr(FI.dwFileVersionLS mod $10000);
        end;
    finally
      FreeMem(VerBuf);
    end;
  end;
end;
阚雷--闞靁 2012-12-16
  • 打赏
  • 举报
回复
不会吧,这个都看不懂
lhy 2012-12-13
  • 打赏
  • 举报
回复
引用 1 楼 zhangzhen_927116 的回复:
这个只是获取版本号。那么修改版本号又是怎么实现的呢?
不能修改正在运行的程序吧。
zhangzhen_927116 2012-12-13
  • 打赏
  • 举报
回复
这个只是获取版本号。那么修改版本号又是怎么实现的呢?

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧