首先,我们可以运行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" 这样就不需要调整安全级别了,但是还是会弹出是否允许之类的提示,毕竟对客户来说这是很危险的行为.
就说到这了,花了半天的时间解决的小问题,拿来分享下成果了.