(5条消息) 获取EXE版本信息 GetFileVersionInfo
需要三个函数配合GetFileVersionInfoSize,GetFileVersionInfo,VerQueryValue。
1. 前两个函数的使用,为VerQueryValue做准备
DWORD dwInfoSize, dwHandle;dwInfoSize = ::GetFileVersionInfoSize(m_szAppFilePath, &dwHandle);if(dwInfoSize <= 0)ASSERT(FALSE);BYTE* pData = new BYTE[dwInfoSize];VERIFY(::GetFileVersionInfo(m_szAppFilePath, NULL,dwInfoSize, (LPVOID)pData));
2. 获取主次版本号
VERIFY(::VerQueryValue((LPCVOID)pData, _T("\\"), &lpBuffer, &uLength));m_dwProductVersionMS = ((VS_FIXEDFILEINFO*)lpBuffer)->dwProductVersionMS;m_dwProductVersionLS = ((VS_FIXEDFILEINFO*)lpBuffer)->dwProductVersionLS;
3. 获取版权信息
VERIFY(::VerQueryValue((LPCVOID)pData,_T("\\StringFileInfo\\080404b0\\LegalCopyright"),&lpBuffer, &uLength));CString szCopyright((LPCTSTR)lpBuffer, (int)uLength);
4. 获取产品名称
VERIFY(::VerQueryValue((LPCVOID)pData,_T("\\StringFileInfo\\080404b0\\ProductName"),&lpBuffer, &uLength));CString szProductName((LPCTSTR)lpBuffer, (int)uLength);
5. 获取公司名称
VERIFY(::VerQueryValue((LPCVOID)pData,_T("\\StringFileInfo\\080404b0\\CompanyName"),&lpBuffer, &uLength));CString szManufacture((LPCTSTR)lpBuffer, (int)uLength);
6.下面为系统性的解释
查询什么主要有VerQueryValue的第二个参数来控制,它的取值如下:
"\" 获取文件的VS_FIXEDFILEINFO结构
"\VarFileInfo\Translation" 获取文件的翻译表
"\StringFileInfo\languagecodepage\stringname" 获取文件的字串信息,languagecodepage指的是语言代码页【080404b0为中文,040904E4为英文】。
赞 (0)
