当前位置: 首页 > news >正文

[IE编程] 如何获得IE版本号

程序中使用IE的WebBrowser 控件(MSHTML)或者开发BHO插件的时候,通常需要获得IE的版本号以便做不同处理。这里介绍2中获得IE版本号的方法:

1) 通过注册表

IE的版本号信息放在注册表的:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Version

注:64位机器的32位IE在HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Version

2) 通过读取mshtml.dll 的版本号

mshtml是IE的核心DLL之一。 mshtml.dll文件的版本号码和IE的版本号码应该是一致的。以下代码演示如何获得mshtml.dll的版本号。

const TCHAR szFilename[] = _T("mshtml.dll"); DWORD dwMajorVersion =0, dwMinorVersion = 0; DWORD dwBuildNumber =0, dwRevisionNumber = 0; DWORD dwHandle = 0; 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); } } printf("mshtml.dll VersionInfo: \n\tMajorVersion=%d\n\tMinorVersion=%d\n\tBuildNumber=%d\n\tRevisionNumber=%d\n", dwMajorVersion, dwMinorVersion, dwBuildNumber, dwRevisionNumber);

通过以上2种方法获得 MajorVersion, MinorVersion, BuildNumber, RevisionNumber 之后,你可以查询我之前的blog文章 《IE 版本号大全》里面的那个表来判断是那个IE发行版本。

相关Blog文章:

IE8 正式版(RTM) 的版本号: 8.0.6001.18702
[IE编程] IE 版本号大全

>> 原创文章的版权属于作者,转载请注明出处和作者信息(http://blog.csdn.net/WinGeek/), 谢谢。 <<<

相关文章:

  • Windows Azure 系列-- Azure Queue的操作
  • Build the Hack CPU with Verilog
  • 使用Service Bus Topic 实现简单的聊天室
  • 使用Service Bus + SignalR 实现聊天室
  • 中移动OMS系统展望..
  • Asp.net MVC4 + signalR 聊天室实现
  • JSF的国际化
  • javascript 替换浏览器Tab的title实现消息通知提示
  • 很好很强大 中移动OMS开源操作系统使用感想
  • [Windows编程] 获取系统CPU 个数
  • 算法练习之DP 求LCM (最长公共子序列)
  • C#中的特性Attribute
  • 算法练习 -- DP 查找和为指定数字的数组
  • 2009英雄会后记:最出彩是创业 最关注是产品 最可惜是创富
  • 算法练习--- DP 求解最长上升子序列(LIS)
  • 230. Kth Smallest Element in a BST
  • Angular4 模板式表单用法以及验证
  • create-react-app项目添加less配置
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • Fabric架构演变之路
  • Go 语言编译器的 //go: 详解
  • happypack两次报错的问题
  • Javascript基础之Array数组API
  • javascript面向对象之创建对象
  • Less 日常用法
  • Mocha测试初探
  • Promise面试题,控制异步流程
  • Protobuf3语言指南
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • React+TypeScript入门
  • underscore源码剖析之整体架构
  • Vue2.0 实现互斥
  • 程序员最讨厌的9句话,你可有补充?
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 反思总结然后整装待发
  • 分布式熔断降级平台aegis
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 目录与文件属性:编写ls
  • 使用权重正则化较少模型过拟合
  • 数组的操作
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 用Visual Studio开发以太坊智能合约
  • 在Mac OS X上安装 Ruby运行环境
  • AI算硅基生命吗,为什么?
  • 我们雇佣了一只大猴子...
  • ​Python 3 新特性:类型注解
  • ​queue --- 一个同步的队列类​
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • #DBA杂记1
  • #pragam once 和 #ifndef 预编译头
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (3)nginx 配置(nginx.conf)