GetFileVersionInfo获取版本号

 

{
	DWORD dwVerInfoSize=0;
	AnsiString strFileName=Application->ExeName;
	dwVerInfoSize=GetFileVersionInfoSize(strFileName.c_str(),&dwVerInfoSize);
	char *vBuffer;
	if(dwVerInfoSize>0)
	{
		vBuffer=new char[dwVerInfoSize];
		memset(vBuffer,0,dwVerInfoSize);
		if(GetFileVersionInfo(strFileName.c_str(),0,dwVerInfoSize,vBuffer))
		{
			LPVOID lpBuffer = NULL;
			UINT uLen = 0;

			LPDWORD lang;
			UINT len,i,j;
			char buffer[4096];
			char strLanguage[200];
			memset(strLanguage,0,200);
			if(VerQueryValue(vBuffer,"\\VarFileInfo\\Translation",(void**)&lang,&uLen))
			{
				wsprintf(strLanguage,"%04x%04x\\",LOWORD(*lang), HIWORD(*lang));
			}
			AnsiString strTmp=strLanguage;
			strTmp="\\StringFileInfo\\"+strTmp;

			//产品名称
			AnsiString str=strTmp+"ProductName";
			memset(strLanguage,0,200);
			if(VerQueryValue(vBuffer,str.c_str(),(LPVOID*)&lpBuffer,&uLen))
			{
				memcpy(strLanguage,lpBuffer,uLen);
				this->Text=strLanguage;
			}

			//产品版本
			str=strTmp+"ProductVersion";
			memset(strLanguage,0,200);
			if(VerQueryValue(vBuffer,str.c_str(),(LPVOID*)&lpBuffer,&uLen))
			{
				memcpy(strLanguage,lpBuffer,uLen);
				this->Text=this->Text + " - " + strLanguage;
			}

			//合法版权
			str=strTmp+"LegalCopyright";
			memset(strLanguage,0,200);
			if(VerQueryValue(vBuffer,str.c_str(),(LPVOID*)&lpBuffer,&uLen))
			{
				memcpy(strLanguage,lpBuffer,uLen);
				this->StatusBar1->Panels->Items[0]->Text = strLanguage;
			}

			//出品公司
			str=strTmp+"CompanyName";
			memset(strLanguage,0,200);
			if(VerQueryValue(vBuffer,str.c_str(),(LPVOID*)&lpBuffer,&uLen))
			{
				memcpy(strLanguage,lpBuffer,uLen);
				this->StatusBar1->Panels->Items[1]->Text= strLanguage ;
			}
		}
		delete vBuffer;
	}
}

 

posted @ 2015-01-15 13:27  teyond  阅读(3123)  评论(0)    收藏  举报