• 大小: 128KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-11
  • 语言: C/C++
  • 标签: 版本信息  

资源简介

通过代码获得程序资源中VS_VERSION_INFO所有信息。

资源截图

代码片段和文件信息

#include “ModuleVersion.h“
#pragma comment(lib “Version.lib“)
#pragma comment(lib “crypt32.lib“)


CModuleVersion::CModuleVersion(void)
: m_pVersionInfo(NULL)
{
}
//
CModuleVersion::CModuleVersion(TRANSLATION langAndCode)
: m_pVersionInfo(NULL)
{
m_translation = langAndCode;
}
//
CModuleVersion::~CModuleVersion(void)
{
if (m_pVersionInfo)
{
delete [] m_pVersionInfo;
m_pVersionInfo = NULL;
}
}
//////////////////
// Get file version info for a given module
// Allocates storage for all info fills “this“ with
// VS_FIXEDFILEINFO and sets codepage.
//
bool CModuleVersion::GetFileVersionInfo(const wchar_t* szModuleName)
{
bool bRet = false;
m_translation.charset = 1252; // default = ANSI code page
memset((VS_FIXEDFILEINFO*)this 0 sizeof(VS_FIXEDFILEINFO));

// get module handle
TCHAR filename[_MAX_PATH];
HMODULE hModule = ::GetModuleHandle(szModuleName);

if (hModule==NULL && szModuleName!=NULL)
return false;

// get module file name
DWORD len = GetModuleFileName(hModule filename sizeof(filename)/sizeof(filename[0]));
if (len <= 0)
return false;

// read file version info
DWORD dwDummyHandle; // will always be set to zero
len = GetFileVersionInfoSize(filename &dwDummyHandle);
if (len <= 0)
return false;

m_pVersionInfo = new BYTE[len]; // allocate version info
if (!::GetFileVersionInfo(filename 0 len m_pVersionInfo))
return false;

LPVOID lpvi;
UINT iLen;
if (!VerQueryValue(m_pVersionInfo _T(“\\“) &lpvi &iLen))
return false;

// copy fixed info to myself which am derived from VS_FIXEDFILEINFO
*(VS_FIXEDFILEINFO*)this = *(VS_FIXEDFILEINFO*)lpvi;

// Get translation info
if (VerQueryValue(m_pVersionInfo _T(“\\VarFileInfo\\Translation“) &lpvi &iLen) && iLen >= 4) 
{
m_translation = *(TRANSLATION*)lpvi;
//TRACE(L“code page = %d\n“ m_translation.charset);
}
bRet = dwSignature == VS_FFI_SIGNATURE;
return bRet;
}
//
std::wstring CModuleVersion::GetValue(const wchar_t* szName)
{
std::wstring szRet;
if (m_pVersionInfo) 
{
wchar_t strSubBlock[256];
swprintf(strSubBlock 
256 
L“\\StringFileInfo\\%04x%04x\\%s“ 
m_translation.langID 
m_translation.charset 
szName);

LPVOID lpBuffer = NULL;
UINT uLen = 0;
BOOL br = ::VerQueryValueW(m_pVersionInfo strSubBlock &lpBuffer &uLen);
if (br == 0)
{
return L““;
}
szRet = (const wchar_t*)lpBuffer;
}
return szRet;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2496  2016-06-15 17:21  ModuleVersionMFC\ModuleVersionMFC\ModuleVersion.cpp

     文件       1597  2016-06-15 17:21  ModuleVersionMFC\ModuleVersionMFC\ModuleVersion.h

     文件     106144  2016-06-15 17:40  ModuleVersionMFC\ModuleVersionMFC\ModuleVersionMFC.aps

     文件       1366  2016-06-15 17:28  ModuleVersionMFC\ModuleVersionMFC\ModuleVersionMFC.cpp

     文件        505  2016-06-15 17:28  ModuleVersionMFC\ModuleVersionMFC\ModuleVersionMFC.h

     文件       6119  2016-06-15 17:40  ModuleVersionMFC\ModuleVersionMFC\ModuleVersionMFC.rc

     文件       5875  2016-06-15 17:38  ModuleVersionMFC\ModuleVersionMFC\ModuleVersionMFC.vcproj

     文件       4128  2016-06-15 17:38  ModuleVersionMFC\ModuleVersionMFC\ModuleVersionMFCDlg.cpp

     文件        608  2016-06-15 17:30  ModuleVersionMFC\ModuleVersionMFC\ModuleVersionMFCDlg.h

     文件       2425  2016-06-15 17:28  ModuleVersionMFC\ModuleVersionMFC\ReadMe.txt

    .......     67777  2007-11-28 16:21  ModuleVersionMFC\ModuleVersionMFC\res\ModuleVersionMFC.ico

     文件        372  2016-06-15 17:28  ModuleVersionMFC\ModuleVersionMFC\res\ModuleVersionMFC.rc2

     文件       1148  2016-06-15 17:35  ModuleVersionMFC\ModuleVersionMFC\resource.h

     文件        149  2016-06-15 17:28  ModuleVersionMFC\ModuleVersionMFC\stdafx.cpp

     文件        910  2016-06-15 17:28  ModuleVersionMFC\ModuleVersionMFC\stdafx.h

     文件       1030  2016-06-15 17:28  ModuleVersionMFC\ModuleVersionMFC\targetver.h

     文件        914  2016-06-15 17:28  ModuleVersionMFC\ModuleVersionMFC.sln

     目录          0  2016-06-15 17:28  ModuleVersionMFC\ModuleVersionMFC\res

     目录          0  2016-06-15 17:41  ModuleVersionMFC\ModuleVersionMFC

     目录          0  2016-06-15 17:41  ModuleVersionMFC

----------- ---------  ---------- -----  ----

               203563                    20


评论

共有 条评论