首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

获取现阶段程序的版本号

2013-01-02 
获取当前程序的版本号。function GetFileVersion(fn: string var ma, mi, r ,b: integer):boolean//得到

获取当前程序的版本号。

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;

这是在网上找到的一段代码。但是不知道什么意思。求帮忙解释下。调用怎么调用的?
[解决办法]
那这个你能看懂不?

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;

热点排行