function ShowVersion:String; // 获得应用程序的版本号 var VerInfo : PChar; lpTranslate : PLANGANDCODEPAGE; FileName:String; VerInfoSize, VerSize, cbTranslate : DWORD; VerValueSize : DWORD; Data : String; VerFileV:PChar; lpFileVersion:string; begin Result := '0.0.0.0'; FileName := Application.ExeName; // 应用程序对应的 exe 文件 VerInfoSize := GetFileVersionInfoSize(PChar(FileName),VerSize); if VerInfoSize > 0 then begin VerInfo := AllocMem(VerInfoSize); GetFileVersionInfo(PChar(FileName),0,VerInfoSize,VerInfo); VerQueryValue(VerInfo, PChar('/VarFileInfo/Translation'), Pointer(lpTranslate),cbTranslate); if cbTranslate <> 0 then begin Data := format('/StringFileInfo/%.4x%.4x/FileVersion',[lpTranslate^.wLanguage,lpTranslate^.wCodePage]); VerQueryValue(VerInfo, PAnsiChar(data),Pointer(VerFileV), VerValueSize); if VerValueSize <> 0 then begin SetString(lpFileVersion,VerFileV,VerValueSize-1); Result:=lpFileVersion; end; end; FreeMem(VerInfo,VerInfoSize); end else begin Result:='0.0.0.0'; Application.MessageBox('获取文件版本信息时遇到致命错误,请重新打开软件。','错误',MB_OK+MB_ICONSTOP); Application.Terminate; end; end;