VS_VERSION_INFO 版本信息

CString modFilename;
if(GetModuleFileName(AfxGetInstanceHandle(), modFilename.GetBuffer(MAX_PATH), MAX_PATH) > 0)
{
modFilename.ReleaseBuffer(MAX_PATH);
DWORD dwHandle = 0;
DWORD dwSize = GetFileVersionInfoSize(modFilename, &dwHandle);
if(dwSize > 0)
{
LPBYTE lpInfo = new BYTE[dwSize];
ZeroMemory(lpInfo, dwSize);
if(GetFileVersionInfo(modFilename, 0, dwSize, lpInfo))
{
Use the version information block to obtain the FILEVERSION.
This will extract language specific part of versio resources. 040904E4 is English(US) locale,
it should match to your project
//UINT valLen = MAX_PATH;
//LPVOID valPtr = NULL;
//if(::VerQueryValue(lpInfo,
//TEXT("//StringFileInfo//040904E4//FileVersion"),
//&valPtr,
//&valLen))
//{
//CString valStr((LPCTSTR)valPtr);
//AfxMessageBox(valStr);
//}
This will extract so called FIXED portion of the version info
UINT valLen = MAX_PATH;
LPVOID valPtr = NULL;
if(::VerQueryValue(lpInfo,
TEXT("//"),
&valPtr,
&valLen))
{
VS_FIXEDFILEINFO* pFinfo = (VS_FIXEDFILEINFO*)valPtr;
// convert to text
CString valStr;
valStr.Format(_T("%d.%d.%d.%d"),
(pFinfo->dwFileVersionMS >> 16) & 0xFF,
(pFinfo->dwFileVersionMS) & 0xFF,
(pFinfo->dwFileVersionLS >> 16) & 0xFF,
(pFinfo->dwFileVersionLS) & 0xFF
);
AfxMessageBox(valStr);
}
}
delete[] lpInfo;
}
}

Code is here:

CString modFilename; if(GetModuleFileName(AfxGetInstanceHandle(), modFilename.GetBuffer(MAX_PATH), MAX_PATH) > 0) { modFilename.ReleaseBuffer(MAX_PATH); DWORD dwHandle = 0; DWORD dwSize = GetFileVersionInfoSize(modFilename.GetBuffer(MAX_PATH), &dwHandle); if(dwSize > 0) { LPBYTE lpInfo = new BYTE[dwSize]; ZeroMemory(lpInfo, dwSize); if(GetFileVersionInfo(modFilename.GetBuffer(MAX_PATH), 0, dwSize, lpInfo)) { Use the version information block to obtain the FILEVERSION. This will extract language specific part of versio resources. 040904E4 is English(US) locale, it should match to your project //UINT valLen = MAX_PATH; //LPVOID valPtr = NULL; //if(::VerQueryValue(lpInfo, //TEXT("//StringFileInfo//040904E4//FileVersion"), //&valPtr, //&valLen)) //{ //CString valStr((LPCTSTR)valPtr); //AfxMessageBox(valStr); //} This will extract so called FIXED portion of the version info UINT valLen = MAX_PATH; LPVOID valPtr = NULL; if(::VerQueryValue(lpInfo, TEXT("//"), &valPtr, &valLen)) { VS_FIXEDFILEINFO* pFinfo = (VS_FIXEDFILEINFO*)valPtr; // convert to text CString valStr; valStr.Format(_T("%d.%d.%d.%d"), (pFinfo->dwFileVersionMS >> 16) & 0xFF, (pFinfo->dwFileVersionMS) & 0xFF, (pFinfo->dwFileVersionLS >> 16) & 0xFF, (pFinfo->dwFileVersionLS) & 0xFF ); AfxMessageBox(valStr); } } delete[] lpInfo; } }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值