浏览器插件之ActiveX开发(一) 原创 浏览器插件 web应用 插件 Innev 08月23日发布 [![](/upload/article/images/f6.jpg)](#) # 浏览器控件开发 一般的Web应用对于浏览器插件能不使用的建议尽量不使用,因为其涉及到安全问题以及影响用户安装(或自动下载注册安装)体验问题。在有特殊需求(如涉及数据安全的金融业务数据交互、需插件才能实现的与本地设备的交互等)的情况下可以酌情慎用。 浏览器插件总体可以划分为两大阵营,即IE支持的插件以及非IE支持的插件。本来在Netscape时代,对于浏览器插件是有公用的规范的(NPAPI),一开始所有浏览器都支持该规范,包括IE。后来出于商业原因,微软的IE不再支持NPAPI,改而自己开发了一套基于COM的ActiveX体系,但这个体系对于非IE浏览器是拒绝支持的。所以目前的状况基本是,IE浏览器仅支持ActiveX控件,而Firefox、Chrome等浏览器只支持另一类接口(XPCOM或NPAPI)。要想实现一个Web插件,至少需要同时考虑IE支持的AceiveX版以及非IE支持的Plugin版(Flash等插件对于IE与非IE浏览器都是不同的)。 ActiveX的开发可以用C#、VB及C++等语言。用C++开发ActiveX既可以使用ATL,也可以使用MFC。ATL ActiveX输出文件较小,适合网络传输,但开发复杂度稍大;而MFC ActiveX输出文件稍大(附带必要的MFC dll),但易于上手。本文主要介绍基于MFC的ActiveX开发。 ------------------- ## 一、创建项目 ### 1. 在VS2010中,新建一个MFC ActiveX Control项目:WebOffice ![这里写图片描述](http://img.blog.csdn.net/20160823153001945) ### 2. 点击 **确定** 后一路 **下一步** 直到 【**控件设置**】,设置后点击 **完成** ![这里写图片描述](http://img.blog.csdn.net/20160823153519025) ### 3. 右击项目名称,选择**属性**弹出项目属性页。 - 修改**配置属性->常规->MFC的使用**为"在静态库中使用MFC"以便编译时将MFC相关库自动和控件一起打包。 ![这里写图片描述](http://img.blog.csdn.net/20160823154246005) - 修改**配置属性->链接器->注册输出**为"否"以便编译后不会自动注册插件。 ![这里写图片描述](http://img.blog.csdn.net/20160823154521109) `注意:创建MFC ActiveX Control时已经自动给项目添加了.def文件并做好了相应关联。若对配置信息更改后导致编译的ocx注册不成功或提示找不到EntryPoint,可以检查一下“链接器->输入->模块定义文件”是否配置正确,正常情况下已经自动配置好了,如下图:` ![这里写图片描述](http://img.blog.csdn.net/20160823154858001) ## 二、在HTML中使用插件 经过上面的步骤,已经创建了一个最简单的ActiveX控件,接下来可以把这控件应用在HTML页面中查看效果 #### 1. 在项目中打开*项目名.idl* 文件,拉到文件最下面,查找控件的classid。 ![这里写图片描述](http://img.blog.csdn.net/20160823160543538) #### 2. 新建HTML文件 demo.html,把下面的代码复制到HTML文件中。 代码块语法遵循标准markdown代码,例如: ``` html <object width="1300" height="768" id="WebOffice" classid="clsid:5884D1D2-022C-4D6E-9FDC-8AF539F09912"> <param name="_ExtentX" value="6350" /> <param name="_ExtentY" value="6350" /> </object> ``` #### 3. 新建文件 weboffice.bat,把下面的代码复制进去并保存,用于注册插件。 ``` bat regsvr32 WebOffice.ocx /s ``` #### 4. 将文件weboffice.bat、demo.html、WebOffice.ocx复制到同一个目录中。 1. 双击 weboffice.bat注册插件 2. 用IE打开demo.html,可以看到插件的效果 08月23日发布 阅读原文 分享到: