【问题标题】:Expose function to Javascript from a .ocx ActiveX从 .ocx ActiveX 向 Javascript 公开函数
【发布时间】:2016-06-15 18:43:32
【问题描述】:

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

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

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

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

procedure WriteText(const text: string); safecall;

并且,从 Javascript,我这样称呼它:

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

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

我还尝试将函数中的string 类型替换为WideStringPWideChar,但总是出现相同的错误。

我该如何解决这个问题?

【问题讨论】:

  • 请记住,微软在很多很多年前就放弃了对网页中 ActiveX 的支持。只在 IE 中工作,他们甚至没有把它带到 Edge 上。
  • 20 世纪末的时间旅行者!欢迎!
  • 啊哈哈好吧,我理解它是一种已被弃用的技​​术,但..我必须处理它!
  • FWIW,几年前我尝试使用 Delphi 为 Windows 7 桌面编写小工具。它本质上是一个 HTML 文档,我可以嵌入在 Delphi 中构建的 ActiveX 控件。这很草率,但它奏效了。就在上周,我尝试使用这些小工具,但它们不再起作用。我也不想重新选择这个项目,因为我知道这不值得。

标签: delphi activex ole ocx


【解决方案1】:

我通过将 ID 提供给 <OBJECT> 元素并通过 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">

【讨论】:

    猜你喜欢
    • 2013-03-18
    • 2023-04-01
    • 1970-01-01
    • 2021-02-16
    • 1970-01-01
    • 1970-01-01
    • 2014-02-13
    • 2011-07-28
    • 1970-01-01
    相关资源
    最近更新 更多