在IE中使用ActiveX控件,需要使用HTML中的标志是<OBJECT>,该标记几个重要的参数特性有:
1.ID:为控件提供一个标识名称,为HTML代码提供一种访问该控件的入口。
2.CLASSID:是该控件唯一的UID,告诉IE装入哪个对象。如果使用已经开发好的控件,它的CLASSID可以在系统的注册表中查找。在注册表中展开HKEY—CLASSES—BOOT项,可以看到按字母顺序排列的注册表,找到需要使用的控件名,展开时可看到—个CLASSID活页夹,里面就是该控件的CLASSID。
3.CODEBASE:如果在用户机器上没有控件的当前版本,该参数告诉用户浏览器在哪里可找到要下载的控件和最新版本号.当控件作了修改后,可以更改版本号强制用户重新下载。
4.PARAM:该标记用于设置控件的初始属性值,它有两个特性:Name 和 Value,即属性名称和属性值。
此外还有一些标记,如:Width表示该控件所占的宽度,Height表示高度等,总体来说,这样一个插入控件的HTML代码和插入Java Applet的HTML代码非常相似。
以下是嵌有ActiveX控件的HTML代码例程:
<OBJECT
ID= "MyControl"
CLASSID="classid:051D1245 - 9821 - 24G5 - 87CI - 01A044C9698AC"
CODEBASE="http:/ /www.abcd.ef/mycontrol.ocx#version = 1, 0 ,0 ,0"
WIDTH = 200
HEIGHT = 100
ALIGN = center
HSPACE = 0
VSPACE = 0
> < / OBJECT>
如果希望控件还能在Netscape中运行,除了Netscape需加装插件外,HTML也要加一些附加标记。如果是自己开发的OCX控件,则有些用户第一次访问时除了下载OCX文件外,还要下载相应的DLL文件,使用VB5开发的OCX控件,可以打包成在客户端自解压安装的CAB文件(在以下详述)。以下为Netscape中的例程:
<OBJECT
ALIGN = “CENTER" CLASSID=“clsid:051D1245-9821-24G5-87CI- 01A044C9698AC"
WIDTH =“600" HEIGHT =“300" ID =“marquee&quot;"
CODEBASE="http:/ /www.abcd.ef/mycontrol.ocx#version = 1, 0 ,0 ,0" >
<EMBED
ALIGN = "CENTER" CLASSID = "clsid:051D1245-9821-24G5-87CI-01A044C9698AC"
WIDTH = "1200" HEIGHT = "900" ID ="marquee&quot;"
CODEBASE="http:/ /www.abcd.ef/mycontrol.ocx#version = 1, 0 ,0 ,0" >
TYPE = "application / oleobject"
></ OBJECT>

众所周知,activex是微软搞得,因此只有ie内核的浏览器才能支持。像firefox(火狐)、Chrome、Apple Safari等非ie内核浏览器都不支持activex控件,这样就大大加大了系统使用的局限性。

因此考虑是不是可以让非ie内核浏览器也能支持activex控件,目前火狐等浏览器也有类似于activex控件的技术,那就是插件。所以最终决定以插件来作为连接activex的纽带,使非ie内核浏览器也可以支持activex控件。

确定了开发内容后,接下来就是上网了解相关方面的知识和技术。了解了NPAPI技术

NPAPI全称为:Netscape Plugin Application Programming Interface (NPAPI).

NPAPI 是一个很经典的插件方案,用dll进行注入,用协定的API进行通信,用字符串描述插件能力。浏览器会根据能力描述,动态加载插件,并负责插件调用的流程和生命周期管理。而插件中,负责真实逻辑的处理,并可以构造UI与用户交流。以此类方式实现的插件系统。

在firefox提供SDK的下载(https://developer.mozilla.org/en-US/docs/Gecko_SDK

插件整体的实现思路就是通过插件调用OCX控件,也就是插件本身是衔接浏览器与OCX的一条桥梁,这样做就可以简单的实现非ie内核浏览器对OCX控件的支持。

经过一个多礼拜的开发,插件功能已经基本实现。并且为了方便使用已经打包成exe安装包。在项目中可以直接让用户下载安装。

安装效果图:

安装完成后,可以打开火狐浏览器在地址栏输入about:plugins,查看插件是否正确安装,
如下图所示,已经安装成功
下面测试一下插件效果,首先找一个可用的activex控件(本人用自己写的插件测试)html页面代码
 
  1. <HTML>
  2. <H1> 测试页面 </H1><p>
  3. 测试页面
  4. <HR><center><P>
  5. <br>
  6. <object
  7. id="Webplugin"    //ocxid
  8. TYPE="application/xhanhan-activex"
  9. BORDER="0"
  10. WIDTH="300"
  11. HEIGHT="300"
  12. clsid="{A2DC9F0E-1A2D-4C6D-BB2E-053BABE17134}"> //ocx插件id
  13. </object>
  14. </HTML>
 
将以上代码保存为html文件然后用火狐打开,效果如下图
 
 
可以看到activx控件已经可以在火狐下运行。目前插件已经在xp,vista、win7、win7(64)、windows server2003、
windows server2008等操作系统,以及火狐、Google Chrome、Opera、Apple Safari、遨游极速模式、360急速模
式下通过测试。支持市面上大部分主流浏览器。
 
参考源码:http://code.google.com/p/ff-activex-host/source/checkout
 
参考:http://blog.csdn.net/guorun18/article/details/50311619
http://www.cnblogs.com/lidabo/p/3580643.html

浏览器使用ActiveX控件的更多相关文章

  1. Skyline TerraExplorer Pro(等ActiveX控件)在Google Chrome浏览器的运行方法

    首先感谢ActiveX for Chrome 网银助手(np-activex)这个项目(https://code.google.com/p/np-activex/),解决了我们困惑很久的问题——在Ch ...

  2. 编写在浏览器中不弹出警告的ActiveX控件

    我们在编写ActiveX控件时,如果用在浏览器中,经常都会弹出现在运行的脚本不安全的提示, 如果给客户使用,将会带来极大不便.按照MSDN的介绍通常有两种一种是实现IObjectSafe接口,一种是通 ...

  3. ActiveX控件打包成Cab实现浏览器自动下载安装

    前言 我们在浏览器中使用我们自己的一些OCX,或者是DLL这一类的文件,在X86的机器上需要我们手动将这些文件拷贝到Windows/System32 文件夹下面去,然后通过Dos命令regsvr32 ...

  4. 基于MFC的ActiveX控件开发教程------------浏览器插件之ActiveX开发

    浏览器插件之ActiveX开发(一) 一般的Web应用对于浏览器插件能不使用的建议尽量不使用,因为其涉及到安全问题以及影响用户安装(或自动下载注册安装)体验问题.在有特殊需求(如涉及数据安全的金融业务 ...

  5. 用C#编写ActiveX控件,开发浏览器控件,注册ActiveX 控件

    用C#编写ActiveX控件,开发浏览器控件,注册ActiveX 控件用C#编写ActiveX控件 开发浏览器控件这是本控件开发完成后的一个简单应用.我们可以利用它以本地文件夹为单位来批量更新服务器的 ...

  6. ActiveX控件之ActiveXObject is not defined

    ActiveX控件方便用户在网页中插入各种效果,但是并不是所有浏览器都支持该控件. ActiveX是微软独有的,只有基于IE内核的浏览器才能使用. 当出现如上错误,可以将通过该控件创建的对象定义为本地 ...

  7. 用C#开发ActiveX控件,并使用web调用

    入职差不多两个月了,由学生慢慢向职场人做转变,也慢慢的积累知识,不断的更新自己.最近的一个项目里边,涉及到的一些问题,因为SDK提供的只是winform才能使用了,但是有需求咱们必须得完成啊,所以涉及 ...

  8. .net下开发ActiveX控件

    `   ActiveX 是一个开放的集成平台,为开发人员. 用户和 Web生产商提供了一个快速而简便的在 Internet 和 Intranet 创建程序集成和内容的方法. 使用 ActiveX, 可 ...

  9. ActiveX控件打包、签名、嵌入详解

    ActiveX控件打包.签名.嵌入详解 前言 在我们的一个项目中,使用到了大华网络监控摄像头枪机,网络上下载了其ActiveX插件,但是发现其所提供的类库没有打包处理.这就导致我们每次给用户安装的时候 ...

随机推荐

  1. 转 Flash与PS交互动画

    FLASH是可以点击体验的,不是图片哦. UI中国不能上传flash,但是站酷可以,UI中国的就下载载附件看看吧 本人学生党兼网页设计师菜鸟一名,因为无聊练习做了个FLASH的交互 所以很多学弟学妹们 ...

  2. Ubuntu上用快捷键关闭没有响应的程序

    Linux 上有很多方法可以强制关闭无响应的程序,比如你可以通过按快捷键 Ctrl + Shift + T 来调出 Terminal 或者用 Ctrl + Shift + F1 进入 Console ...

  3. TopFreeTheme精选免费模板【20130703】

    今天我们给大家分享13个最新的主题模板,5款WordPress主题,5款Joomla模板,3款OpenCart主题. BowThemes – BT Folio v1.0 Template for Jo ...

  4. Java实现中文字符串的排序功能

    package test; /** * * @Title 书的信息类 * @author LR * @version 1.0 * @since 2016-04-21 */ public class B ...

  5. OC使用inline替代宏

    CG_INLINE voidGCDDelay(int64_t delayInSeconds,dispatch_block_t block){ dispatch_time_t popTime = dis ...

  6. easyui问题小记

    在easyui1.4.3版本中,(其他版本不知道是不是也是这样的),绑定在datagridview上面的数据最好不要是带有特殊符号的字段,不然会导致部分的属性不好用,比如这样的字段  START_DA ...

  7. CSS圆角,输入框提示信息,JS查找同级元素

    input { /*设置边框*/ border:1px solid #95B8E7; border-radius: 5px; /*设置圆角,IE不兼容*/ height:18px } placehol ...

  8. 3.emWin5.26(ucGui)VS2008 2-D图形库-基本绘图【Worldsing笔记】

    UCGUI(emWin) 2-D图形库--之基本板绘图,在ucgui的基本绘图功能上来看,功能还是比较全的,本例程主要使用基本的接口,两个主要的概念是绘制(draw)和填充(Fill),这两的区别是一 ...

  9. LOTUS 迁移到Exchange 2010 POC 之在Exchange 2007 安装Lotus Admin!

    双击Setup安装:

  10. Left join 中On和Where的作用范围

    SQL语句如下: SELECT * FROM 表1 LEFT JOIN 表2 ON 表1.id = 表2.id AND 表2.Name != 'ff'WHERE 表1.NAME != 'aa' Lef ...