zoukankan      html  css  js  c++  java
  • JAVASCRIPT 调用 OCX 的那些坑

    这个东西我之前已经想写了,但是在我写完“制作OCX”,“MFC应用OCX” 之后,html 调用OCX 就一直不成功,搞了好久,都快要放弃了。昨天领导需要我这边完成一个通过浏览器启动外部应用程序这样一个功能,限于公司懂OCX 的不多,就担起了这个任务。我知道之前尝试的时候就失败了,所以这次又进了那个坑,坑了我好久,直到快下班前才解决。

    记录下解决方法。

    一,首先准备一个可以正常运行的OCX。

    这个东西还是用c++写比较方便,前几篇已经写过了,就不多赘述了。

    二,准备一个注册和卸载OCX 的批处理文件

    注册.bat

    regsvr32 "%~dp0ocx15.ocx"

    卸载.bat

    regsvr32 "%~dp0ocx15.ocx" -u

    三,准备一个调用OCX 的html 文件

    <html>
    <head>
    <script type="text/JavaScript" language="javascript"> 
     function show(string1)
     {
           alert('123');
           var obj = document.getElementById("TestOcx");
           alert(obj);
           var ret = obj.StartApplication(string1);
           alert(ret);
     }
    </script>
    </head>
    <body >
    <object id="TestOcx" width="" height="" classid="clsid:440BF279-30B8-41D2-AFE7-F19141110C96">
    </object>
    </OBJECT> 
    <input type="button" id="btn1" name="btn1" value="调用ocx" title="调用ocx" 
    onclick="show('file:///D:/SE-1515/ECGWorkstation.exe.lnk')"></input>
    </body>
    </html>

    这里的classid 一定要注意,当时我看到OCX工程中idl 文件下UUID 有很多个,我也不知道用哪个,就用了文件最上面的一个uuid,结果呢,就是因为uuid错误,调试了好久。这里的uuid 最好从注册表中拿到,拿的方法如下:

    在运行中键入 regedit 进入注册表编辑器中,在编辑选项中点击查找,

    这是就找到我们注册的OCX 了。这里的440BF279-30B8-41D2-AFE7-F19141110C96 就是我们要的clsid,

    这时,html 页面还不一定能显示出这个OCX控件,需要在Internet 选项中,启用 ActiveX ,方便起见,我把该项下,所有的用ActiveX 的都启用了。

    同时在高级选项下,去掉那3个检查项。

    这个时候,你的html 页面应该会可以显示出OCX控件了,当然你也隐藏,调用OCX 应该就没什么问题了,html 调用OCX 这个只能试用于IE 浏览器,别问我为什么,都是微软的东西。

    四,注意事项

    1,  注意clsid一定要正确

    2,  注意Internet选项里面的设置。

    3,  注意一定要是IE 浏览器。

  • 相关阅读:
    java支持跨平台获取cpuid、主板id、硬盘id、mac地址 (兼容windows、Linux)
    Oracle 数据导入导出
    Linux下通过脚本自动备份Oracle数据库并删除指定天数前的备份
    Liunx下查看服务器硬件信息
    Linux文件类型及如何查看,修改文件读写权限
    Linux ext3 ext4 区别
    网站访问量大 怎样优化mysql数据库
    LeetCode——Coin Change
    LeetCode——two sum
    LeetCode——Edit Distance
  • 原文地址:https://www.cnblogs.com/techdreaming/p/7387925.html
Copyright © 2011-2022 走看看