1、delphi 7 新建一个工程选择如下类型
2、设置OCX名称
3、增加函数"view"->"Type Library"
4、设置函数名称
5、设置函数返回值与入参(注意 返回参数不要使用 * 因为地址传递无法跟浏览器交互 我是这么理解的,亲测也确实没调用成功)
入参为 in 出差 是out 跟retval
6、点下上面两个小箭头的刷新按钮,就在Impl文件生成了代码,然后填充你的代码就可以了
7、编译与注册DLL
regsvr32 E:OCXDelphi\ReaderOCProj.ocx
反注册命令 如下(重新改了 先反注册 然后重新注册)
regsvr32 /u E:OCXDelphi\ReaderOCProj.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 博主的分享
原文地址:https://www.cnblogs.com/530263009QQ/p/10055823.html