从.ocx ActiveX向Javascript公开函数

时间:2016-06-14 13:16:08

标签: delphi activex ole ocx

我使用Delphi开发了char*。 Rad Studio自动为我生成了.ocx文件。

我创建了一个加载.ridl的html页面,它没有任何问题。

现在,我需要在Html页面内的Javascript中调用.ocx activeX文件中的一个函数,我知道它可能但我无法弄清楚如何。我想我必须以某种方式配置.ocx文件,但我找不到任何关于它的文档。

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

.ridl

并且,从Javascript,我称之为:

procedure WriteText(const text: string); safecall;

但我得到了错误document.forms[0].MyProjectName.WriteText('foo'); (我有点怀疑它是 EOleSysError 类型错误)。所以我可以看到WriteText函数,但我无法使用它。

我还尝试用variable type invalidstring替换我的函数中的WideString类型,但总是出现相同的错误。

我怎么能解决这个问题?

1 个答案:

答案 0 :(得分:1)

我通过给<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">