javascript 调用delphi封装的OCX控件·

Posted 530263009qq

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript 调用delphi封装的OCX控件·相关的知识,希望对你有一定的参考价值。

 

 

 

 

1、delphi 7 新建一个工程选择如下类型

技术分享图片

2、设置OCX名称

技术分享图片

3、增加函数"view"->"Type Library"

技术分享图片

4、设置函数名称

技术分享图片

5、设置函数返回值与入参(注意 返回参数不要使用 * 因为地址传递无法跟浏览器交互 我是这么理解的,亲测也确实没调用成功)

入参为 in 出差 是out 跟retval

技术分享图片

6、点下上面两个小箭头的刷新按钮,就在Impl文件生成了代码,然后填充你的代码就可以了

 技术分享图片

 

 

 

 技术分享图片

 7、编译与注册DLL 

regsvr32 E:OCXDelphiReaderOCProj.ocx 

反注册命令 如下(重新改了 先反注册 然后重新注册)
regsvr32 /u E:OCXDelphiReaderOCProj.ocx 

8、编写 html测试用例(我保存的名字叫 ZZZ.html )

 <html>   
<head> 
<script type="text/javascript" language="javascript"> 
function show(string1)
{
alert(‘123‘);
var obj = document.getElementById("TReaderOCX");
alert(obj);
var ret = obj.HelloWorld(string1);
alert(ret);
}
</script>
<title>测试</title>   
</head>   
<body> 
<object id="TReaderOCX" width="" height="" classid="clsid:6BF75C69-5B10-4BC9-9800-E137A4D0EAF6"></object> 
<input type="button" id="btn1" name="btn1" value="调用ocx" title="调用ocx" 
onclick="show(‘晶奇‘)"></input>
</body>   
</html> 
其中  classid可以在 TLB 文件 搜下 ClassID 找到
技术分享图片

 

 TReaderOCX 为类名称 实现的函数 每个都是这个开头的

技术分享图片

 8、设置启动项 

 技术分享图片

9、测试

注意:如果是IE8,则会出现无法进入断点的情况。

解决方法: 修改注册表

regedit→ HKEY_LOCAL_MACHINE →SOFTWARE→Microsoft →   Internet Explorer→Main。在Main里新建一个DWORD类型名为TabProcGrowth值为0。

另一种解决方法:delphi7的ocx对应的tlb文件顶部有一个{$VARPROPSETTER ON},把这个开关去掉重新编译注册就可以了

 技术分享图片

 

 本文在  https://www.cnblogs.com/tc310/p/4816590.html 基础上增加了调试内容 感谢tc310 博主的分享





















以上是关于javascript 调用delphi封装的OCX控件·的主要内容,如果未能解决你的问题,请参考以下文章

JS如何调用delphi制作的ocx控件中的函数

delphi制作的activex(ocx)如何用于ie浏览器

delphi中用代码实现注册Ocx和Dll

web 不用ocx怎么调用本地dll

delphi 里如何加入OCX文件

delphi 中 如何注册ocx文件