📄 sh_filever.cpp
字号:
// SH_FileVer.cpp: implementation of the SH_FileVer class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "SH_FileVer.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
SH_FileVer::SH_FileVer()
{
m_strCompanyName = _T("");
m_strFileDescription = _T("");
m_strFileVersion = _T("");
m_strInternalName = _T("");
m_strLegalCopyright = _T("");
m_strOriginalFileName = _T("");
m_strProductName = _T("");
m_strProductVersion = _T("");
m_strComments = _T("");
m_strLegalTrademarks = _T("");
m_strPrivateBuild = _T("");
m_strSpecialBuild = _T("");
m_strFileName = _T("");
}
SH_FileVer::SH_FileVer(LPCTSTR lpszFile)
{
m_strCompanyName = _T("");
m_strFileDescription = _T("");
m_strFileVersion = _T("");
m_strInternalName = _T("");
m_strLegalCopyright = _T("");
m_strOriginalFileName = _T("");
m_strProductName = _T("");
m_strProductVersion = _T("");
m_strComments = _T("");
m_strLegalTrademarks = _T("");
m_strPrivateBuild = _T("");
m_strSpecialBuild = _T("");
m_strFileName = lpszFile;
}
SH_FileVer::~SH_FileVer()
{
}
BOOL SH_FileVer::GetVerInfo(LPCTSTR lpszFileName)
{
SetFileName(lpszFileName);
return GetVerInfo();
}
BOOL SH_FileVer::GetVerInfo()
{
LPVOID lpVar1;
LPVOID lpVar2;
BYTE * pVerInfo = NULL;
DWORD dwSize;
DWORD dwHandle = 0;
WORD *wTmp;
CString strTmp;
BOOL bRet = FALSE;
char* szVerKey[13] = {"\\CompanyName" ,
"\\FileDescription" ,
"\\FileVersion" ,
"\\InternalName" ,
"\\LegalCopyright" ,
"\\OriginalFileName",
"\\ProductName" ,
"\\ProductVersion" ,
"\\Comments" ,
"\\LegalTrademarks" ,
"\\PrivateBuild" ,
"\\SpecialBuild" ,
"\\StringFileInfo\\"};
dwSize = GetFileVersionInfoSize((char*)GetFileName(), &dwHandle);
if(dwSize == 0) return FALSE;
pVerInfo = new BYTE[dwSize];
bRet = GetFileVersionInfo((char*)GetFileName(), dwHandle,dwSize, pVerInfo);
if(bRet)
{
bRet = VerQueryValue(pVerInfo, "\\VarFileInfo\\Translation", &lpVar1, (UINT*)&dwSize);
if(bRet)
{
wTmp = (WORD*)lpVar1;
for(int index = 0; index < 12; index++)
{
strTmp.Format("%s%04x%04x%s", szVerKey[12], *wTmp, *(wTmp + 1), szVerKey[index]);
if(VerQueryValue(pVerInfo, strTmp.GetBuffer(strTmp.GetLength()), &lpVar2, (UINT*)&dwSize))
{
VerInfo2String(index, (char*)lpVar2);
TRACE("%s\n",(char*)lpVar2);
}
}
}
}
SAFE_DELETE_ARRAY(pVerInfo);
return TRUE;
}
BOOL SH_FileVer::VerInfo2String(int nIndex, LPCTSTR lpszVer)
{
BOOL bRet = TRUE;
switch(nIndex)
{
case 0:
m_strCompanyName = lpszVer;
break;
case 1:
m_strFileDescription = lpszVer;
break;
case 2:
m_strFileVersion = lpszVer;
break;
case 3:
m_strInternalName = lpszVer;
break;
case 4:
m_strLegalCopyright = lpszVer;
break;
case 5:
m_strOriginalFileName = lpszVer;
break;
case 6:
m_strProductName = lpszVer;
break;
case 7:
m_strProductVersion = lpszVer;
break;
case 8:
m_strComments = lpszVer;
break;
case 9:
m_strLegalTrademarks = lpszVer;
break;
case 10:
m_strPrivateBuild = lpszVer;
break;
case 11:
m_strSpecialBuild = lpszVer;
break;
default:
bRet = FALSE;
}
return bRet;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -