私自身「ヒドラ」の旅を始めたばかりですが、あなたの質問に答えるために最善を尽くします.
Q1. これは、あなたの状況に関する詳細情報がなければ答えにくいです。Delphi コード ベースにアクセスできますか? 既にプラグインがある既存のアプリケーションにプラグインを追加しますか?それとも、Hydra プラグイン フレームワークをアプリケーションに追加し始めたばかりですか? 今のところ、既存のホスト アプリケーションに新しいプラグインを追加していて、ホストとプラグイン間の通信に使用するカスタム インターフェイスを含む .pas ファイルがあると思います。その場合は、次の方法でうまくいくはずです。
- Visual Studio で新しい "RemObjects Hydar" -> "Plugin Module" プロジェクトを開始する必要があります。
- [ツール] -> [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 について言及していると思います。これは、実行時にすべてのプラグインをロードするために (とりわけ) 使用されます。
それが役立つことを願っています。