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;
}
}
首先、在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;
}
}
相关文章推荐
- Android 获取程序版本信息
- 获取Android版本信息和程序版本号
- FileInfo 0.0.0003--masm32写的获取文件属性、版本、时间、MD5值等信息的小程序
- 如何获取DLL文件自身的版本信息
- FileInfo 0.0.0005--masm32写的获取文件属性、版本、时间、MD5、SHA1 等信息的小程序
- 复制自身程序到windows目录和系统目录,获取系统的相关信息
- VC/MFC程序中获取当前Windows操作系统版本名称(2016-04-25修改)
- vc mfc代码中获得程序资源中版本信息的方法
- [VC]获取本地程序的版本信息信息
- MFC获取版本指定信息方法
- win10里用MFC获取命令行程序运行时的信息时出现“拒绝访问”的问题
- FileInfo 0.0.0004--masm32写的获取文件属性、版本、时间、MD5值等信息的小程序
- Delphi2010怎样获取程序内部自身版本?
- java程序获取jdk版本等信息
- 使用Windows API实现运行时动态获取程序文件版本信息
- 获取程序当前版本信息
- vc mfc代码中获得程序资源中版本信息的方法
- 获取.NET版本信息。
- 将 svn 版本修订号写入程序版本信息
- HttpRequest获取网站信息的程序示例