分享

WEB调用dll+ActiveX控件

 hh3755 2013-01-17

本项目中除了涉及到java 调用dll 外,还用到web 来调用 dll+activeX 控件!

将动态库dll 封装成控件优缺点对比

优:方便直接,用户只要有IE就行。

缺:只能针对不同浏览器做不同的控件,如IE,FireFox 等。

说明:

DLL(动态链接库): 分WIN32 DLL和MFC DLL
ActiveX:分ATL控件和MFC控件两类(也是一个DLL)
WEB:JAVASCRIPT 调用-> ActiveX调用-> DLL 完成加法运算并返回值,在页面上显示。

(一)动态库dll 与 ActiveX 实现

   实现方式:本文不阐述(参考相关文档,网络上有很多)。

  一般情况下会有下面四个文件,如下图所示

生成后的activex控件

其中 SMT_SeraCtr.inf内容如下:

它描述了下载的内容和目标目录还有版本号及相应的DLL文件。这个要手动编写的。
[version]   
signature="$CHINA$"  
AdvancedINF=1.0 
  
[Add.Code]   
SMT_SeraCtr.ocx=SMT_SeraCtr.ocx 

[SMT_SeraCtr.ocx]   
file=thiscab   
clsid={DD0EEBEE-D54E-43E0-8645-AA90BDBDE718}   
FileVersion=1,1,1,10 
RegisterServer=yes   

        XXX应用控件可以在IE6(或更高版本)浏览器中使用,主要用来操作手机读头。 也可在应用程序中直接调用。

   (二)如何使用:

在IE中调用方式如下:

 

1、在HTML页面中引用控件 ,代码如下。

 <OBJECT ID="SeraCtr" CLASSID=" clsid:DD0EEBEE-D54E-43E0-8645-AA90BDBDE718" height=0 width=0 codeBase=”SMT_SeraCtr.cab#version=1,0,0,10” style="VISIBILITY: hidden" ></OBJECT>
        如果更新发布了新控件版本,请替换服务器的SMT_SeraCtr.cab文件,并更新codeBase的版本号:version=1,0,0,1 0。对于WEB应用,建议所有引用部分做成统一调用方式。
 
2、在HTML页面脚本中,根据应用需要,做对应的方法调用。
<SCRIPT language="javascript" for="CardReader" event="OnlineStateChange(online_state);">
{
       UpdateOnlineState(online_state);
}
</SCRIPT>
-----------------------------------------------------------------------------
说明:
       codeBase="SMT_SeraCtr.cab#version1,0,0,10" codeBase表示文件相对或者绝对路径;version表示版本号,如果这个号和INF文件的版本号一样,那么第二次访问页面就不会下载,否则每次都下载。CLSID 是 ActiveX 项目生成的序号,具体可以在项目的*.rgs 文件中找到。
好了。所有的步骤都完成了,这时你运行index.html,提示ActiveX控件,你选择允许,然后就可以调用了。 
注意:上传文件时,不能上传html 所有将文件扩展名修改为.txt
调用后如下图所示:
 调用后界面

 查看IE加载哪些ActiveX 控件

ie加载项

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多