获取当前程序的版本和获取某个文件的版本
2017-06-05 14:36
176 查看
软件更新需要获取当前程序的版本和获取某个文件的版本,在网上找了两段代码记录下来
1.获取某个文件的版本
2.获取当前程序的版本
CString GetVersion()
{
CString strVersion;
TCHAR szFullPath[MAX_PATH];
DWORD dwVerInfoSize = 0;
DWORD dwVerHnd;
VS_FIXEDFILEINFO * pFileInfo;
GetModuleFileName(NULL, szFullPath, sizeof(szFullPath));
dwVerInfoSize = GetFileVersionInfoSize(szFullPath, &dwVerHnd);
if (dwVerInfoSize)
{
HANDLE hMem;
LPVOID lpvMem;
unsigned int uInfoSize = 0;
hMem = GlobalAlloc(GMEM_MOVEABLE, dwVerInfoSize);
lpvMem = GlobalLock(hMem);
GetFileVersionInfo(szFullPath, dwVerHnd, dwVerInfoSize, lpvMem);
::VerQueryValue(lpvMem, (LPTSTR)_T("\\"), (void**)&pFileInfo, &uInfoSize);
int ret = GetLastError();
WORD m_nProdVersion[4];
m_nProdVersion[0] = HIWORD(pFileInfo->dwProductVersionMS);
m_nProdVersion[1] = LOWORD(pFileInfo->dwProductVersionMS);
m_nProdVersion[2] = HIWORD(pFileInfo->dwProductVersionLS);
m_nProdVersion[3] = LOWORD(pFileInfo->dwProductVersionLS);
strVersion.Format(_T("%d.%d.%d.%d"), m_nProdVersion[0],
m_nProdVersion[1], m_nProdVersion[2], m_nProdVersion[3]);
GlobalUnlock(hMem);
GlobalFree(hMem);
}
return strVersion;
}
1.获取某个文件的版本
BOOL GetFileVersion(LPCTSTR strFile, CString& strVersion) { TCHAR szVersionBuffer[8192] = _T(""); DWORD dwVerSize; DWORD dwHandle; dwVerSize = GetFileVersionInfoSize(strFile, &dwHandle); if (dwVerSize == 0) { return FALSE; } if (GetFileVersionInfo(strFile, 0, dwVerSize, szVersionBuffer)) { VS_FIXEDFILEINFO *pInfo; unsigned int nInfolen; if (VerQueryValue(szVersionBuffer, _T("\\"), (void**)&pInfo, &nInfolen)) { strVersion.Format(_T("%d.%d.%d.%d"), HIWORD(pInfo->dwFileVersionMS), LOWORD(pInfo->dwFileVersionMS), HIWORD(pInfo->dwFileVersionLS), LOWORD(pInfo->dwFileVersionLS)); return TRUE; } } return FALSE; }
2.获取当前程序的版本
CString GetVersion()
{
CString strVersion;
TCHAR szFullPath[MAX_PATH];
DWORD dwVerInfoSize = 0;
DWORD dwVerHnd;
VS_FIXEDFILEINFO * pFileInfo;
GetModuleFileName(NULL, szFullPath, sizeof(szFullPath));
dwVerInfoSize = GetFileVersionInfoSize(szFullPath, &dwVerHnd);
if (dwVerInfoSize)
{
HANDLE hMem;
LPVOID lpvMem;
unsigned int uInfoSize = 0;
hMem = GlobalAlloc(GMEM_MOVEABLE, dwVerInfoSize);
lpvMem = GlobalLock(hMem);
GetFileVersionInfo(szFullPath, dwVerHnd, dwVerInfoSize, lpvMem);
::VerQueryValue(lpvMem, (LPTSTR)_T("\\"), (void**)&pFileInfo, &uInfoSize);
int ret = GetLastError();
WORD m_nProdVersion[4];
m_nProdVersion[0] = HIWORD(pFileInfo->dwProductVersionMS);
m_nProdVersion[1] = LOWORD(pFileInfo->dwProductVersionMS);
m_nProdVersion[2] = HIWORD(pFileInfo->dwProductVersionLS);
m_nProdVersion[3] = LOWORD(pFileInfo->dwProductVersionLS);
strVersion.Format(_T("%d.%d.%d.%d"), m_nProdVersion[0],
m_nProdVersion[1], m_nProdVersion[2], m_nProdVersion[3]);
GlobalUnlock(hMem);
GlobalFree(hMem);
}
return strVersion;
}
相关文章推荐
- 【转载】如何获取当前程序文件的路径
- 如何获取当前程序文件的路径【转载】
- c# 获取当前运行程序文件,函数,行号
- vc 获取程序版本号,当前程序路径,文件修改时间 等
- 如何获取当前程序文件的路径 Current Path
- [转]VC获取当前程序文件的路径,文件名以及路径+文件名
- 获取当前文件程序所在的物理路径
- VC获取当前程序文件的路径,文件名以及路径+文件名
- 使用Windows API实现运行时动态获取程序文件版本信息
- FileInfo 0.0.0005--masm32写的获取文件属性、版本、时间、MD5、SHA1 等信息的小程序
- 获取当前程序文件的路径
- 获取任意文件路径及文件名、运行程序当前目录
- 如何获取当前程序文件的路径 Current Path
- VC获取当前程序文件的路径,文件名以及路径+文件名
- 如何获取当前程序文件的路径
- 如何获取当前程序文件的路径 Current Path
- vc 获取程序版本号,当前程序路径,文件修改时间 等
- VC获取当前程序文件的路径,文件名以及路径+文件名
- 在Linux下获取当前运行程序可执行文件全路径(不使用real_path()函数)
- VC获取当前程序文件的路径,文件名以及路径+文件名