vc設定程式版本, 獲取程式版本號
最近正在學vc,很多不會的,真是寸步難行,好在這個世界有網路這個好東西,遇到問題百度一下或是GOOGLE總能找到看來很有道理的答案,為了方便以後自己的學習,就總結了一下放在這裡,也歡迎大家發表真知灼見。
//很好,很方便,無需修改,可作為程式模組直接呼叫。
//獲取軟體當前的版本
//該版本號是在資原始檔中的../Version/VS_VERSION_INFO/FILEVERSION的值
CString CMFCVLCDlg::GetFileVer()
{
char cPath[200],szVersionBuffer[200];
DWORD dwHandle,InfoSize;
CString strVersion;
::GetModuleFileName(NULL,cPath,sizeof(cPath)); //首先獲得版本資訊資源的長度
InfoSize = GetFileVersionInfoSize(cPath,&dwHandle); //將版本資訊資源讀入緩衝區
if(InfoSize==0) return _T("None VerSion Supprot");
char *InfoBuf = new char[InfoSize];
GetFileVersionInfo(cPath,0,InfoSize,InfoBuf); //獲得生成檔案使用的內碼表及檔案版本
unsigned int cbTranslate = 0;
struct LANGANDCODEPAGE {
WORD wLanguage;
WORD wCodePage;
} *lpTranslate;
VerQueryValue(InfoBuf, TEXT("
// Read the file description for each language and code page.
for( int i=0; i < (cbTranslate/sizeof(struct LANGANDCODEPAGE)); i++ )
{
char SubBlock[200];
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=(char *)lpBuffer;
strVersion+=strTemp;
}
return strVersion;
}