1

我必须在 Delphi Prism 中为已经在 Delphi 中的 Application 创建一个插件。我已在 www.remobjects.com 上阅读了有关 Hydra 3.0 的所有信息,并有一些疑问。

  1. 你能给我一个例子,如何为 Delphi Host 和 .Net Plugin 之间的通信创建自定义接口。(在 C# 或 Delphi Prism 中)

  2. ModuleController 在 Hydra 插件中的作用是什么以及它是如何工作的?

  3. 管理器组件的作用?

提前谢谢了。

4

1 回答 1

1

我自己刚刚开始“九头蛇”之旅,但我会尽力回答您的问题。

Q1。如果没有有关您的情况的更多信息,这很难回答。您可以访问 Delphi 代码库吗?您是在向已有插件的现有应用程序添加插件,还是刚刚开始将 Hydra 插件框架添加到您的应用程序?现在我猜你正在向现有的主机应用程序添加一个新插件,并且你有一个 .pas 文件,其中包含你将用于主机和插件之间通信的自定义接口。如果是这种情况,那么以下内容应该适合您。

  • 您需要在 Visual Studio 中启动一个新的“RemObjects Hydar”->“插件模块”项目。
  • 通过“工具”->“Hydra”->“从 Delphi 单元导入接口”导入包含通信接口的 .pas 文件
  • 将一个新的“RemObjects Hydra”->“(Non-)Visual Plugin”项目添加到您的项目中
  • 将接口添加到新插件类并实现接口的方法。

应该是这样的。您的主机应用程序现在可以查询您的插件以查看它实现了哪些接口,然后调用它需要的方法。

这类似于您导入的接口文件的外观

type
  {$REGION Attributes}
  [Guid('9D445B3E-CA9F-4C67-815A-F5EC6BAB5D60')]
  {$ENDREGION}
  IMyInterface = public interface(IHYCrossPlatformInterface)
    method MyMethod(const MyInput: String; out MyOutput: String);
  end;

这就像你的插件类应该是什么样子

type
  [Plugin, NonVisualPlugin]
  MyPlugin = public partial class(RemObjects.Hydra.NonVisualPlugin, IMyInterface)
  private
  protected
    method Dispose(aDisposing: boolean); override;
    method MyMethod(const MyInput: String; out MyOutput: String);
  public
    constructor;
  end;

Q2。据我所知,模块控件负责将插件模块中的所有插件注册到主机应用程序中。您还可以从插件中使用它与主机应用程序进行通信。

Q3。我假设您指的是 THYModuleManager。这用于(除其他外)在运行时加载所有插件。

希望有帮助。

于 2009-09-03T02:11:15.310 回答