首先,我们可以运行regsvr32将其注册,然后用COM Explorer查找dll中的文件,可以在其中查到该dll的classid和控件名称.例如控件名为test而classid为BF96561D-FD6D-47CE-B9F0-9967695CEEBC,那我们就可以将此dll放在与html文件同目录下.然后写如下html代码,我们假定我们需要调用该dll中的test方法,该方法返回客户端的操作系统名.
<html>
<head>
<script>
function mytest()
{
var o=new ActiveXObject("test");
alert(o.test());
}
</script>
</head>
<body>
<input type="button" value="测试" onclick="mytest();"/>
<object id='localip' classid="clsid:BF96561D-FD6D-47CE-B9F0-9967695CEEBC" codeBase="test.dll" width="0" height="0"/>
</body>
</html>
这样,将html运行起来,当我们点测试按钮的时候,将弹出一个提示框,输出用户的操作系统类型如XP,当然如何得到这个XP,是写DLL的人去做,我们无须关心.不过这样可能会报js错误,为什么呢?因为IE也不是白痴,你随意获取人家系统信息,不进行控制那不都中毒了么,所以我们要将自动下载未签名active等被禁用的改为询问.
是否有更好的解决办法呢?当然有,我们可以将dll打包成cab,打包cab的工具也无须到处去找,我们的操作系统中的system32就带了这个工具,直接开始->运行->IExpress 就可以按照需求一步一步的打包了.然后将我们的html代码中的 codeBase="test.dll" 改成 codeBase="test.cab" 这样就不需要调整安全级别了,但是还是会弹出是否允许之类的提示,毕竟对客户来说这是很危险的行为.
就说到这了,花了半天的时间解决的小问题,拿来分享下成果了.