C++获得Windows默认的IE版本

#include "Winver.h";
#pragma comment(lib,"Version.lib")
DWORD GetIeVersion()
{
	const TCHAR szFilename[] = _T("mshtml.dll");
	DWORD dwMajorVersion = 0, dwMinorVersion = 0;
	DWORD dwBuildNumber = 0, dwRevisionNumber = 0;
	DWORD dwHandle = 0;TCHAR szBuf[80];
	DWORD dwVerInfoSize = GetFileVersionInfoSize(szFilename, &dwHandle);//判断容纳文件版本信息需要一个多大的缓冲区
	if (dwVerInfoSize)
	{
		LPVOID lpBuffer = LocalAlloc(LPTR, dwVerInfoSize);//从堆中分配指定大小的字节数
		if (lpBuffer)
		{
			//从支持版本标记的一个模块里获取文件版本信息
			if (GetFileVersionInfo(szFilename, dwHandle, dwVerInfoSize, lpBuffer))
			{
				VS_FIXEDFILEINFO * lpFixedFileInfo = NULL;
				UINT nFixedFileInfoSize = 0;
				if (VerQueryValue(lpBuffer, TEXT("\\"), (LPVOID*)&lpFixedFileInfo, &nFixedFileInfoSize) && (nFixedFileInfoSize))
				{//从版本资源中获取信息
					dwMajorVersion = HIWORD(lpFixedFileInfo->dwFileVersionMS);//主版本号
					dwMinorVersion = LOWORD(lpFixedFileInfo->dwFileVersionMS);//副版本号
					dwBuildNumber = HIWORD(lpFixedFileInfo->dwFileVersionLS);//编译版本号
					dwRevisionNumber = LOWORD(lpFixedFileInfo->dwFileVersionLS);//修订版本号
				}
			}
			LocalFree(lpBuffer);
		}
	}
	else return 0;
	wchar_t buf[1024] = { 0 };
	wsprintfW(buf, L"IE 版本为 %d.%d.%d.%d", dwMajorVersion, dwMinorVersion, dwBuildNumber, dwRevisionNumber);
	OutputDebugStringW(buf);
	return dwMajorVersion;//返回主版本号
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注