wangchenxicool

博客园 首页 联系 管理

首先,我们可以运行regsvr32将其注册,然后用COM Explorer查找dll中的文件,可以在其中查到该dll的classid和控件名称.例如控件名为test而classid为BF96561D-FD6D-47CE-B9F0-9967695CEEBC,那我们就可以将此dll放在与html文件同目录下.然后写如下html代码,我们假定我们需要调用该dll中的test方法,该方法返回客户端的操作系统名. 

  

Html代码 复制代码 收藏代码
  1. <html>  
  2. <head>  
  3. <script>  
  4.     function mytest()   
  5.     {   
  6.         var o=new ActiveXObject("test");     
  7.         alert(o.test());   
  8.     }   
  9. </script>  
  10. </head>  
  11. <body>  
  12.     <input type="button" value="测试" onclick="mytest();"/>  
  13.     <object id='localip' classid="clsid:BF96561D-FD6D-47CE-B9F0-9967695CEEBC" codeBase="test.dll" width="0" height="0"/>  
  14. </body>  
  15. </html>  

  这样,将html运行起来,当我们点测试按钮的时候,将弹出一个提示框,输出用户的操作系统类型如XP,当然如何得到这个XP,是写DLL的人去做,我们无须关心.不过这样可能会报js错误,为什么呢?因为IE也不是白痴,你随意获取人家系统信息,不进行控制那不都中毒了么,所以我们要将自动下载未签名active等被禁用的改为询问.

  是否有更好的解决办法呢?当然有,我们可以将dll打包成cab,打包cab的工具也无须到处去找,我们的操作系统中的system32就带了这个工具,直接开始->运行->IExpress  就可以按照需求一步一步的打包了.然后将我们的html代码中的 codeBase="test.dll" 改成 codeBase="test.cab" 这样就不需要调整安全级别了,但是还是会弹出是否允许之类的提示,毕竟对客户来说这是很危险的行为.

  就说到这了,花了半天的时间解决的小问题,拿来分享下成果了. 

posted on 2012-01-30 08:33  wangchenxicool  阅读(2314)  评论(0)    收藏  举报