MyBean简单入门学习(1)

exe改造
1.在项目dpr文件中引用mybean.console单元。

uses mybean.console;

2.在程序初始化时加载插件

program Main;

uses
  Vcl.Forms,
  mybean.console,
  Unit_Main in 'Unit_Main.pas' {Form1},
  UIShowAsNormal in '..\interface\UIShowAsNormal.pas';

{$R *.res}

begin
  Application.Initialize;
 //方法1自动加载:该函数调用后默认根据同目录下的[plug-ins\*.plug-ins]或者[*.plug-ins]配置文件内的信息加载DLL文件。
  ApplicationContextInitialize;
 //方法2手动加载:该方法为手动指定需要加载的DLL文件。
  ExecuteLoadLibFiles('plugins\*.dll');
  ExecuteLoadLibFiles('plugins\*.bpl');
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

3.定义一个接口文件,将需要共享的操作以接口方式调用。

unit UIShowAsNormal;

interface

type
  IShowForm = interface
  ['{DC71A10B-7EC2-45D8-B2D7-17D78D193C90}']
  procedure ShowAsNoraml;stdcall;
  procedure ShowAsMdi;stdcall;
  end;

  IMainPlugCom =interface
    ['{CE4DF363-A5A3-4013-A27C-2A3C4F15E3EB}']
  procedure Receive(msg:PChar);stdcall;
  procedure Send(msg:PChar);stdcall;
  end;

implementation

end.

4.在窗口初始化时将自身放入全局变量,方便其它DLL调用。

procedure TForm1.FormCreate(Sender: TObject);
begin
   //设置全局变量
  TMyBeanFactoryTools.SetObject('main',Self); 
end;

2019/02/21 补充
需要在窗口单元引用mybean.tools.beanFactory单元才能调用上面函数。

5.修改窗口调用的代码为。

procedure TForm1.Button3Click(Sender: TObject);
var
  showf:IShowForm;
begin
//将IShowForm对象赋值给showf
  showf :=  TMyBeanFactoryTools.GetBean('plug1') as IShowForm;
//调用IShowForm的ShowAsNoraml方法显示窗体。
  showf.ShowAsNoraml;
end;

你可能感兴趣的:(MyBean简单入门学习(1))