javascript调用c++等语言写的active dll

首先,我们可以运行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" 这样就不需要调整安全级别了,但是还是会弹出是否允许之类的提示,毕竟对客户来说这是很危险的行为.

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



原文地址:http://xinxu.iteye.com/blog/765114

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值