这个东西我之前已经想写了,但是在我写完“制作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 浏览器。

JAVASCRIPT 调用 OCX 的那些坑的更多相关文章

  1. javascript调用ActiveX接口失败的解决方案及使用心得

    前段时间公司做了个比较大的项目,需要用到ocx控件,我厂大部分项目都采用C#.net,而winform程序条用ocx控件接口是相对简单的,但是javascript调用ocx接口,却和winform的用 ...

  2. html调用OCX

    <body> <p>hello</p> <p></p> <object id="iett" classid=&qu ...

  3. 使用IPostBackEventHandler让JavaScript“调用”回传事件

    在由ASP.NET所谓前台调用后台.后台调用前台想到HTTP——实践篇(二)通过自己模拟HTML标签事件与服务器交互,讲了ASP.NET的服务器控件是怎么render成HTML后市怎么“调用”后台方法 ...

  4. Javascript调用C#后台方法及JSon解析

    Javascript调用C#后台方法及JSon解析   如何使用Ajax 调用C# 后台方法. 本文目录 如何使用Ajax 调用C# 后台方法. 1.后台(.cs)测试方法 2.前台调用(javasc ...

  5. Javascript调用ActiveX示例

      Javascript调用ActiveX示例   写一个ActiveX控件比如叫做MyNameSpace.SecreteInfo,安装在客户机器上,这样可以通过c++获取到机器的几乎任何信息. 在网 ...

  6. Android中Webview使用javascript调用事先定义好的Java函数

    1. 首先定义好一个类,专们用于给javascript调用 public class JavaScriptInterface { // share your news public void shar ...

  7. html,JavaScript调用winfrom方法

    ---恢复内容开始--- 目的: 在动画上面添加点击事件,通过JavaScript调用winfrom方法 1.创建一个页面 using System; using System.Collections ...

  8. 通过JavaScript调用SOAP终结点执行实体消息

    关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复148或者20150813可方便获取本文,同时可以在第一时间得到我发布的最新的博文信息,follow me! 利用OData终结点可以方便的对 ...

  9. 从javascript 调用angular的函数

    从vanilla javascript 调用angular的函数: * 调用 service中的函数var yourService = angular.element(document.body).i ...

随机推荐

  1. mybatis学习笔记(四)-- 为实体类定义别名两种方法(基于xml映射)

    下面示例在mybatis学习笔记(二)-- 使用mybatisUtil工具类体验基于xml和注解实现 Demo的基础上进行优化 以新增一个用户为例子,原UserMapper.xml配置如下: < ...

  2. JavaScript 语言中的 this

    JavaScript 语言中的 this 由于其运行期绑定的特性,JavaScript 中的 this 含义要丰富得多,它可以是全局对象.当前对象或者任意对象,这完全取决于函数的调用方式.JavaSc ...

  3. 流行框架angular

    ---恢复内容开始--- 一.angular是什么 一款非常优秀的前端高级js框架,由谷歌团队负责开发 angular是通过新的属性和表达扩展了html angular可以构建一个单一页面应用程序(s ...

  4. Android性能优化:ViewStub

    在开发应用程序的时候,经常会遇到这样的情况,会在运行时动态根据条件来决定显示哪个View或某个布局.那么最通常的想法就是把可能用到的View都写在上面,先把它们的可见性都设为View.GONE,然后在 ...

  5. MySQL · 引擎特性 · InnoDB奔溃恢复

    前言 数据库系统与文件系统最大的区别在于数据库能保证操作的原子性,一个操作要么不做要么都做,即使在数据库宕机的情况下,也不会出现操作一半的情况,这个就需要数据库的日志和一套完善的奔溃恢复机制来保证.本 ...

  6. jmeter-Java关于MD5加密方法 以及16位32位互转

    MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致.是计算机广泛使用的杂凑算法之一(又译摘要算法.哈希算法),主流编程语言普遍已有MD5实现.将 ...

  7. nodejs-ORM 操作数据库中间件waterline的使用

    waterline和Sails.js同一团队开发,支持几乎所有的主流数据库,是nodejs下一款非常强大的orm,可以显著提升开发效率 一.waterline支持的数据库 二.waterline的配置 ...

  8. hdu 3926 hands in hands

    https://vjudge.net/problem/HDU-3926 题意:有n个小朋友,他们之间手拉手,但是一只手只能拉一只手或者不拉,现在给出两个图,表示拉手关系,问这两个图是否同构.思路:一开 ...

  9. DDD理论学习系列(11)-- 工厂

    DDD理论学习系列--案例及目录 1.引言 在针对大型的复杂领域进行建模时,聚合.实体和值对象之间的依赖关系可能会变得十分复杂.在某个对象中为了确保其依赖对象的有效实例被创建,需要深入了解对象实例化逻 ...

  10. docker~windows版本的安装与使用

    回到目录 在面向服务的框架里,docker扮演着十分重要的角色,他使你的部署更轻量,使运维更智能化,事实上微软自己的项目也已经用上了docker了,下面介绍一下在windows环境上使用docker的 ...