get file version
//
AnsiString GetFileVersion(AnsiString Path)
{
AnsiString asReturn;
DWORD dwHandle,InfoSize;
InfoSize = GetFileVersionInfoSize(Path.c_str(),&dwHandle);
if(InfoSize == 0) return "";
//将版本信息资源读入缓冲区
char *InfoBuf = new char[InfoSize];
GetFileVersionInfo(Path.c_str(),0,InfoSize,InfoBuf);
//获得生成文件使用的代码页及字符集信息
char *pInfoVal;
unsigned int dwInfoValSize;
VerQueryValue(InfoBuf,"\\VarFileInfo\\Translation",&((void *)pInfoVal),
&dwInfoValSize);AnsiString V = "\\StringFileInfo\\"
+IntToHex(*((unsigned short int *)pInfoVal),4)
+IntToHex(*((unsigned short int *) &pInfoVal[2]),4)
+ "\\FileVersion";
//获得具体的版本号
VerQueryValue(InfoBuf, V.c_str(),&((void *)pInfoVal),&dwInfoValSize);
asReturn = AnsiString(pInfoVal).
SetLength(dwInfoValSize-1);
delete InfoBuf;
return(asReturn);
}