码迷,mamicode.com
首页 > 其他好文 > 详细

获取文版版本信息

时间:2015-05-02 09:51:32      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:

通过API:GetFileVersionInfoSize, GetFileVersionInfoVerQueryValue获取版本信息

首先,在MFC生成的应用程序框架中,版本信息中有FILEVERSION 和 PRODUCTVERSION 两项

PRODUCTVERSION代表该产品的版本,FILEVERSION代表该文件的版本

技术分享

区别:文件版本一般每改一次加一, 产品版本则是一般每发布一次加一,较大改动时则前面的版本号加1.

具体代码如下:

#include <winver.h>
#pragma comment(lib, "Version.lib")

//获取指定文件的版本信息(例如1.0.1.5)
string GetProductVersion(const char* lpszFileName)
{
	TCHAR szFileName[MAX_PATH] = {0}; // 要获取信息的文件  
	if (lpszFileName == NULL)
	{
		::GetModuleFileName(NULL, szFileName, sizeof(szFileName));
	}
	else
	{
		lstrcpy(szFileName, lpszFileName);
	}

	//得到容纳文件版本信息需要缓冲区的大小,如文件不包含版本信息,则返回0.
	string sVerInfo;
	DWORD dwVerHnd = 0;
	DWORD dwVerInfoSize = ::GetFileVersionInfoSize(szFileName, &dwVerHnd);
	if (0 != dwVerInfoSize)
	{

		HANDLE hMem = ::GlobalAlloc(GMEM_MOVEABLE, dwVerInfoSize);
		LPVOID lpMem = ::GlobalLock(hMem);
		if (NULL == lpMem)
		{
			return "";
		}

		//获取文件版本信息,保存到lpvMem中,非0表示成功,0表示失败
		if (::GetFileVersionInfo(szFileName, dwVerHnd, dwVerInfoSize, lpMem))
		{
			//从版本资源中获取查询的信息复制到一个缓冲区pFileInfo里
			//非零表示成功,如请求的信息不存在,或pBlock不属于有效版本信息,那就返回一个零
			const char* lpSubBlock = TEXT("\\");	//"\"标示获取文件的VS_FIXEDFILEINFO结构
			VS_FIXEDFILEINFO *pFileInfo = NULL;	//用于装载请求到的版本信息
			unsigned int uInfoSize = 0;			//请求到的版本信息的长度
			if (::VerQueryValue(lpMem, lpSubBlock, (void**)&pFileInfo, &uInfoSize))
			{
				//获取"产品版本"(区分与文件版本)
				WORD nVer[4] = { 0 };
				nVer[0] = HIWORD(pFileInfo->dwProductVersionMS);
				nVer[1] = LOWORD(pFileInfo->dwProductVersionMS);
				nVer[2] = HIWORD(pFileInfo->dwProductVersionLS);
				nVer[3] = LOWORD(pFileInfo->dwProductVersionLS);
				char szVerInfo[256] = { 0 };
				sprintf_s(szVerInfo, _T("%d.%d.%d.%d"), nVer[0], nVer[1], nVer[2], nVer[3]);
				sVerInfo = szVerInfo;
			}
		}

		::GlobalUnlock(hMem);
		::GlobalFree(hMem);
	}

	return   sVerInfo;
}


获取文版版本信息

标签:

原文地址:http://blog.csdn.net/jiangqin115/article/details/45420593

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!