zoukankan      html  css  js  c++  java
  • 浏览器使用ActiveX控件

    在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.     
    15. </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
  • 相关阅读:
    hash
    C#执行Sql事务处理
    数据库的锁表
    页面的刷新 和图片的替换
    单点登录 Webservice
    js 动态调用js文件
    .net生成EXCEL
    JS : 连续滚动
    引用指定类型的对象
    对象序列化为字符串
  • 原文地址:https://www.cnblogs.com/jzxx/p/6183320.html
Copyright © 2011-2022 走看看