修改版本信息

CHAR   szAppPath[   MAX_PATH   ] =   {   0   };
::GetModuleFileName(   NULL,   szAppPath,   MAX_PATH   );
INT   nVersionLen =   ::GetFileVersionInfoSize(   szAppPath,   NULL   );
if   (   nVersionLen   <=   0   )
{
return   FALSE;
}

CHAR*   pBuffer =   new   CHAR[   nVersionLen   ];
if   (   !pBuffer   )  
{
return   FALSE;
}

if   (   !::GetFileVersionInfo(   szAppPath,   NULL,   nVersionLen,   pBuffer   )   )
{
return   FALSE;
}

//   爲了方便訪問。
struct   LANGANDCODEPAGE   {
WORD   wLanguage;
WORD   wCodePage;
}   *lpTranslate;

//   Read   the   list   of   languages   and   code   pages.
UINT   cbTranslate;
::VerQueryValue(   pBuffer,   "//VarFileInfo//Translation ",
(LPVOID*)&lpTranslate,   &cbTranslate   );

//   Read   the   file   description   for   each   language   and   code   page.
//   資源的各種名稱
//CHAR*   szVersion[]   =   {  
// "Comments ",   "InternalName ",   "ProductName ",
// "CompanyName ",   "LegalCopyright ",   "ProductVersion ",
// "FileDescription ",   "LegalTrademarks ",   "PrivateBuild ",
// "FileVersion ",   "OriginalFilename ",   "SpecialBuild "  
//};
//   dwBytes最大值應該是301.
//   應用僅僅允許輸入最多300個字符:)
UINT   dwBytes;
CHAR*   lpBuffer;
CHAR   szSubBlock[256];

_snprintf(   szSubBlock,   256,   "//StringFileInfo//%04x%04x//Comments ",
lpTranslate[0].wLanguage,   lpTranslate[0].wCodePage   );
if(   ::VerQueryValue(   pBuffer,   szSubBlock,   (   LPVOID*   )&lpBuffer,   &dwBytes   )   )
{
m_stAppVersion.strComment =   lpBuffer;
}

_snprintf(   szSubBlock,   256,   "//StringFileInfo//%04x%04x//InternalName ",
lpTranslate[0].wLanguage,   lpTranslate[0].wCodePage   );
if(   ::VerQueryValue(   pBuffer,   szSubBlock,   (   LPVOID*   )&lpBuffer,   &dwBytes   )   )
{
m_stAppVersion.strInternalName =   lpBuffer;
}

_snprintf(   szSubBlock,   256,   "//StringFileInfo//%04x%04x//ProductName ",
lpTranslate[0].wLanguage,   lpTranslate[0].wCodePage   );
if(   ::VerQueryValue(   pBuffer,   szSubBlock,   (   LPVOID*   )&lpBuffer,   &dwBytes   )   )
{
m_stAppVersion.strProductName =   lpBuffer;
}

_snprintf(   szSubBlock,   256,   "//StringFileInfo//%04x%04x//CompanyName ",
lpTranslate[0].wLanguage,   lpTranslate[0].wCodePage   );
if(   ::VerQueryValue(   pBuffer,   szSubBlock,   (   LPVOID*   )&lpBuffer,   &dwBytes   )   )
{
m_stAppVersion.strCompanyName =   lpBuffer;
}

_snprintf(   szSubBlock,   256,   "//StringFileInfo//%04x%04x//LegalCopyright ",
lpTranslate[0].wLanguage,   lpTranslate[0].wCodePage   );
if(   ::VerQueryValue(   pBuffer,   szSubBlock,   (   LPVOID*   )&lpBuffer,   &dwBytes   )   )
{
m_stAppVersion.strLegalCopyRight =   lpBuffer;
}

_snprintf(   szSubBlock,   256,   "//StringFileInfo//%04x%04x//ProductVersion ",
lpTranslate[0].wLanguage,   lpTranslate[0].wCodePage   );
if(   ::VerQueryValue(   pBuffer,   szSubBlock,   (   LPVOID*   )&lpBuffer,   &dwBytes   )   )
{
m_stAppVersion.strProductVersion =   lpBuffer;
}

_snprintf(   szSubBlock,   256,   "//StringFileInfo//%04x%04x//FileDescription ",
lpTranslate[0].wLanguage,   lpTranslate[0].wCodePage   );
if(   ::VerQueryValue(   pBuffer,   szSubBlock,   (   LPVOID*   )&lpBuffer,   &dwBytes   )   )
{
m_stAppVersion.strFileDescription =   lpBuffer;
}

_snprintf(   szSubBlock,   256,   "//StringFileInfo//%04x%04x//FileVersion ",
lpTranslate[0].wLanguage,   lpTranslate[0].wCodePage   );
if(   ::VerQueryValue(   pBuffer,   szSubBlock,   (   LPVOID*   )&lpBuffer,   &dwBytes   )   )
{
m_stAppVersion.strFileVersion =   lpBuffer;
}

_snprintf(   szSubBlock,   256,   "//StringFileInfo//%04x%04x//PrivateBuild ",
lpTranslate[0].wLanguage,   lpTranslate[0].wCodePage   );
if(   ::VerQueryValue(   pBuffer,   szSubBlock,   (   LPVOID*   )&lpBuffer,   &dwBytes   )   )
{
m_stAppVersion.strPrivateBuild =   lpBuffer;
}

_snprintf(   szSubBlock,   256,   "//StringFileInfo//%04x%04x//OriginalFilename ",
lpTranslate[0].wLanguage,   lpTranslate[0].wCodePage   );
if(   ::VerQueryValue(   pBuffer,   szSubBlock,   (   LPVOID*   )&lpBuffer,   &dwBytes   )   )
{
m_stAppVersion.strOriginalFilename =   lpBuffer;
}

delete[]   pBuffer;
return   TRUE;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章