資源簡介
通過代碼獲得程序資源中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
- 上一篇:維吉尼亞密碼的簡單實現
- 下一篇:系統循環碼C語言實現
評論
共有 條評論