您的位置:首页 > 其它

MFC中获取程序自身的版本信息

2014-11-27 16:27 316 查看
收集整理自CSDN论坛。

首先、在Stdafx.h中引入链接库:

#pragma comment(lib,"Version.lib")

在对应的处理方法中如下:

char FileVerInfo[4096];

DWORD dwVerLen = 0;

CString strPath;//路径

GetModuleFileName(NULL,strPath.GetBufferSetLength(MAX_PATH + 1), MAX_PATH);

strPath.ReleaseBuffer();

int n_Len = GetFileVersionInfoSize(strPath, &dwVerLen);

if (0 != n_Len)

{

BOOL m_bFile = GetFileVersionInfo(strPath,NULL,n_Len,FileVerInfo);

UINT cbTranslate;

char SubBlock[4096];

UINT dwBytes;

struct LANGANDCODEPAGE {

WORD wLanguage;

WORD wCodePage;

} *lpTranslate;

struct version {

char * strProductName;

char * strProductVersion;

char * strLegalCopyright;

char * strCompanyName;

char * strSpecialBuild;

} ver;

VerQueryValue(FileVerInfo,

TEXT("\\VarFileInfo\\Translation"),

(LPVOID*)&lpTranslate,

&cbTranslate);

for( UINT i=0; i < (cbTranslate/sizeof(struct LANGANDCODEPAGE)); i++ )

{

wsprintf( SubBlock,

TEXT("\\StringFileInfo\\%04x%04x\\ProductName"),

lpTranslate[i].wLanguage,

lpTranslate[i].wCodePage);

VerQueryValue(FileVerInfo,

SubBlock,

(void **)&ver.strProductName,

&dwBytes);

wsprintf( SubBlock,

TEXT("\\StringFileInfo\\%04x%04x\\ProductVersion"),

lpTranslate[i].wLanguage,

lpTranslate[i].wCodePage);

// Retrieve file description for language and code page "i".

VerQueryValue(FileVerInfo,

SubBlock,

(void **)&ver.strProductVersion,

&dwBytes);

wsprintf( SubBlock,

TEXT("\\StringFileInfo\\%04x%04x\\LegalCopyright"),

lpTranslate[i].wLanguage,

lpTranslate[i].wCodePage);

// Retrieve file description for language and code page "i".

VerQueryValue(FileVerInfo,

SubBlock,

(void **)&ver.strLegalCopyright,

&dwBytes);

wsprintf( SubBlock,

TEXT("\\StringFileInfo\\%04x%04x\\CompanyName"),

lpTranslate[i].wLanguage,

lpTranslate[i].wCodePage);

// Retrieve file description for language and code page "i".

VerQueryValue(FileVerInfo,

SubBlock,

(void **)&ver.strCompanyName,

&dwBytes);

wsprintf( SubBlock,

TEXT("\\StringFileInfo\\%04x%04x\\SpecialBuild"),

lpTranslate[i].wLanguage,

lpTranslate[i].wCodePage);

// Retrieve file description for language and code page "i".

VerQueryValue(FileVerInfo,

SubBlock,

(void **)&ver.strSpecialBuild,

&dwBytes);

((CStatic *)GetDlgItem(IDC_STATIC_ABOUT_COPYRIGHT))->SetWindowText(ver.strLegalCopyright);

CString strTemp;

CString strVersion;

strTemp = ver.strProductName;

strVersion += strTemp;

strTemp = ver.strProductVersion;

strVersion += " " + strTemp + "版本。";

((CStatic *)GetDlgItem(IDC_STATIC_ABOUT_VERSION))->SetWindowText(strVersion);

break;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: