//获取软件当前的版本
//该版本号是在资源文件中的../Version/VS_VERSION_INFO/FILEVERSION的值CString CMyPro::GetCurProductVersion(){ TCHAR cPath[400] = _T(""),szVersionBuffer[400]= _T(""); DWORD dwHandle,InfoSize; CString strVersion; ::GetModuleFileName(NULL,cPath,sizeof(cPath)); //首先获得版本信息资源的长度 InfoSize = GetFileVersionInfoSize(cPath,&dwHandle); //将版本信息资源读入缓冲区 if(InfoSize==0) return _T("None VerSion Supprot"); TCHAR *InfoBuf = new TCHAR[InfoSize]; GetFileVersionInfo(cPath,0,InfoSize,InfoBuf); //获得生成文件使用的代码页及文件版本 unsigned int cbTranslate = 0; struct LANGANDCODEPAGE { WORD wLanguage; WORD wCodePage; } *lpTranslate; VerQueryValue(InfoBuf, TEXT("//VarFileInfo//Translation"),(LPVOID*)&lpTranslate,&cbTranslate); // Read the file description for each language and code page. for( int i=0; i < (cbTranslate/sizeof(struct LANGANDCODEPAGE)); i++ ) { TCHAR SubBlock[400]; wsprintf( SubBlock, TEXT("//StringFileInfo//%04x%04x//FileVersion"), lpTranslate[i].wLanguage, lpTranslate[i].wCodePage); void *lpBuffer=NULL; unsigned int dwBytes=0; VerQueryValue(InfoBuf, SubBlock, &lpBuffer, &dwBytes); CString strTemp=(TCHAR *)lpBuffer; strVersion+=strTemp; } strVersion.Replace(_T(","),_T(".")); strVersion.Replace(_T(" "),NULL); return strVersion;}
在Project->Settings->Linking 的Object/library modules 内输入 version.lib这个库。
当然头文件需加上#include <tchar.h>
和 #include <windows.h>