各位老大们:现在有一个项目,要求使用模块方式开发,即,整个系统一个主程序和若干个模块(插件)组成,插件为DLL文件,我现在是这样做的:所有的插件(DLL)都使用一个类(A类)作为统一标准,每一个插件的实现单元都继承自(A类),然后引出该类的实例对象。现在已经实现了从插件中引出窗口等基本操作,现在的问题是:1、我要怎样做才能使插件与插件之间通讯?
2、如,一个交易需要几个插件的配合才能实现,要怎样做才能实现给每个插件传入不同的参数(可以是类型、结构、或其它变量),返回不同的结果呢(可以是任何类型的数据或是结果集等)?
下面是插件的接口标准:
interfaceuses
  Classes, Windows, SysUtils;type
  {* 插件状态 *}
  TPluginState = (psNormal, psFree);
  
  {* 插件信息结构 *}
  TPluginInfo = packed record
    Name: string;              {* 插件名称 *}
    Title: string;             {* 插件标题 *}
    Author: string;            {* 作者     *}
    Description: string;       {* 说明     *}
  end;  {* 插件标准 *}
  TPluginStandard = class(TObject)
  private
    FName: string;             {* 插件文件名   *}
    FVersion: string;          {* 插件版本号   *}
    FHandle: THandle;          {* 插件句柄     *}
    FState: TPluginState;      {* 插件状态     *}
  protected
    FInfo: TPluginInfo;        {* 插件信息     *}
  published
    property Info:    TPluginInfo  read FInfo;
    property Name:    string       read FName    write FName;
    property Version: string       read FVersion write FVersion;
    property Handle:  THandle      read FHandle  write FHandle;
    property State:   TPluginState read FState   write FState;
  public
    {* 启动插件 *}
    function Start(Sender: TPluginStandard): Integer; virtual; abstract;
  end;
  PPluginStandard = array of TPluginStandard;implementationend.请老大们帮帮忙吧!定有重谢!

解决方案 »

  1.   

    http://topic.csdn.net/u/20090922/09/bdee06e8-12a4-4b31-8585-0be9b2626434.html?51551
    先给你俩索个线.
      

  2.   

    1、我要怎样做才能使插件与插件之间通讯? 
    是本地通讯还是网络通讯? 本地 用内存文件方式,或者消息等等都可以,网络用UDP方便点
      

  3.   

    大家有没有好的方便来处理插件(DLL)与插件(DLL)之间的直接通讯或是通过主程序通讯及数据传递呢???高手们,帮帮忙呀~~~~~~
      

  4.   

    DLL之间直接通信基本上不可行,必须通过EXE中转
    至于每个插件,一个插件对应一个模块
      

  5.   

    1>你可以使用内存映射文件,百度一下,好多资料.通过监视内存映射文件中的变量达到通信的目的.
    2>这个问题不明所以,没听明白.不过既然是插件,避免插件之间的配合吧!
      

  6.   

    1. 主程序导出接口,或者在调用DLL接口时告诉DLL相关的接口,该接口用于管理相应的事务;
    2. 在主程序提供的接口当中增加一个类似于服务管理接口,允许各DLL安装相应的服务接口;
    3. 各DLL在需要使用相应的接口时向服务管理接口查询相关服务接口,就可以完成相应的数据交换及互操作系统.