本项目中除了涉及到java 调用dll 外,还用到web 来调用 dll+activeX 控件!
将动态库dll 封装成控件优缺点对比
优:方便直接,用户只要有IE就行。
缺:只能针对不同浏览器做不同的控件,如IE,FireFox 等。
说明:
DLL(动态链接库): 分WIN32 DLL和MFC DLL
ActiveX:分ATL控件和MFC控件两类(也是一个DLL)
WEB:JAVASCRIPT 调用-> ActiveX调用-> DLL 完成加法运算并返回值,在页面上显示。
(一)动态库dll 与 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页面中引用控件 ,代码如下。
如果更新发布了新控件版本,请替换服务器的SMT_SeraCtr.cab文件,并更新codeBase的版本号:version=1,0,0,1 0。对于WEB应用,建议所有引用部分做成统一调用方式。
2、在HTML页面脚本中,根据应用需要,做对应的方法调用。
{
UpdateOnlineState(online_state);
}
-----------------------------------------------------------------------------
说明:
codeBase="SMT_SeraCtr.cab#version1,0,0,10" codeBase表示文件相对或者绝对路径;version表示版本号,如果这个号和INF文件的版本号一样,那么第二次访问页面就不会下载,否则每次都下载。CLSID 是 ActiveX 项目生成的序号,具体可以在项目的*.rgs 文件中找到。
好了。所有的步骤都完成了,这时你运行index.html,提示ActiveX控件,你选择允许,然后就可以调用了。
注意:上传文件时,不能上传html 所有将文件扩展名修改为.txt
调用后如下图所示:
查看IE加载哪些ActiveX 控件