栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C/C++ 获取软件或DLL的版本信息

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C/C++ 获取软件或DLL的版本信息

   #pragma comment(lib, "Version.lib ") 

C++实现: 

void SetInitApp()
{
	string appname;
	char l_wcaAppPath[MAX_PATH];//保存应用程序路径
	::GetModuleFileName(NULL, l_wcaAppPath, MAX_PATH);
	CString l_cstrProductVersion;
	UINT l_uiVersionInfoSize;
	TCHAR* l_ptcVersionInfo;
	l_uiVersionInfoSize = ::GetFileVersionInfoSize(l_wcaAppPath, 0);
	l_ptcVersionInfo = new TCHAR[l_uiVersionInfoSize];
	struct VersionLanguage {
		WORD m_wLanguage;
		WORD m_wCcodePage;
	};
	VersionLanguage* l_ptVersionLanguage;
	UINT l_uiSize;
	if (::GetFileVersionInfo(l_wcaAppPath, 0, l_uiVersionInfoSize, l_ptcVersionInfo) != 0)
	{
		if (::VerQueryValue(l_ptcVersionInfo, _T("\VarFileInfo\Translation"), reinterpret_cast(&l_ptVersionLanguage), &l_uiSize)) {
			CString l_cstrSubBlock;
			l_cstrSubBlock.Format(_T("\StringFileInfo\%04x%04x\ProductVersion"), l_ptVersionLanguage->m_wLanguage, l_ptVersionLanguage->m_wCcodePage);
			LPVOID* l_pvResult;
			if (::VerQueryValue(static_cast(l_ptcVersionInfo), l_cstrSubBlock.GetBuffer(), reinterpret_cast(&l_pvResult), &l_uiSize)) {
			  l_cstrProductVersion = (reinterpret_cast(l_pvResult));
			}
		}
	}
	CString sdate = __DATE__ ;
	CString stime = __TIME__;
	CString str = sdate + " " + stime;
	CString appinfo = "[V" + l_cstrProductVersion + "] " + str;
	Gwindb.AppLog(appinfo.GetBuffer());
}

C语言实现: 

int Init_DLL_Version()
{
	DWORD dwHandle, dwLen;
	UINT BufLen;
	LPTSTR lpData;
	VS_FIXEDFILEINFO* pFileInfo;
	dwLen = GetFileVersionInfoSizeA(".//test.dll", &dwHandle);
	if (!dwLen)
		return FALSE;
	lpData = (LPTSTR)malloc(dwLen);
	if (!lpData)
		return FALSE;
	if (!GetFileVersionInfoA(".//test.dll", dwHandle, dwLen, lpData))
	{
		free(lpData);
		return FALSE;
	}
	if (VerQueryValueA(lpData, "\", (LPVOID*)&pFileInfo, (PUINT)&BufLen))
	{
		sprintf(LDllVersion,"%d%d.%d%d",HIWORd(pFileInfo->dwFileVersionMS), LOWORd(pFileInfo->dwFileVersionMS), HIWORd(pFileInfo->dwFileVersionLS), LOWORd(pFileInfo->dwFileVersionLS));
		free(lpData);
		return TRUE;
	}
	free(lpData);
	return FALSE;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1025551.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号