我已经使用Delphi开发了.ocx
Rad Studio为我自动生成了一个.ridl文件。

我创建了一个加载.ocx activeX的html页面,它可以正常工作。

现在,我需要从HTML页面内的Javascript中调用.ocx文件中的函数,我知道它是可能的,但我不知道该怎么做。我认为我必须以某种方式配置.ridl文件,但是我找不到有关它的任何文档。

现在,我在创建的表单中声明了一个公共函数,如下所示:

procedure WriteText(const text: string); safecall;


从Java语言开始,我这样称呼它:

document.forms[0].MyProjectName.WriteText('foo');


但是我得到了错误variable type invalid(我有点怀疑它是EOleSysError类型错误)。所以我可以看到WriteText函数,但是我不能使用它。

我还尝试用stringWideString替换函数中的PWideChar类型,并始终出现相同的错误。

我该如何解决?

最佳答案

我通过给<OBJECT>元素赋予ID并通过javascript调用方法来完成此操作,如下所示:

<script language="javascript">
  someID.WriteText('Hello!');
</script>


在页面的某处:

<OBJECT ID="someID"
        CLASSID="clsid:12345678-90AB-CDEF-1234-56789ABCDEF1"
        CODEBASE="/my.ocx"
        WIDTH="100"
        HEIGHT="25">

关于delphi - 从.ocx ActiveX向Java脚本公开功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37813182/

10-12 23:28