打印本文 打印本文 关闭窗口 关闭窗口
插件管理框架 for Delphi(三)
作者:武汉SEO闵涛  文章来源:敏韬网  点击数1980  更新时间:2009/4/23 18:35:09  文章录入:mintao  责任编辑:mintao

1       前言

2       插件框架(untDllManager)

3       使用举例

3.1   类图

3.2   客户端组件

从TDll派生出TClientDll;

根据真实的动态库接口添加相关属性;

3.2.1    组件定义

unit untClientDll;

 

interface

 

uses

  Windows, Classes, SysUtils, untDllManager, untProcDefine;

 

type

 

  EClientDllError = Class(Exception);

 

  { TClientDll

    o 继承自 TDll;

    o 自动获取 ClientInitialize 地址并保存在 ClientInitialize 属性中;

    o 自动获取 ClientInsertTrigger 地址并保存在 ClientInsertTrigger 属性中;

  }

 

  TClientDll = Class(TDll)

  private

    FClientInitialize: TClientInitialize;

    FClientInsertTrigger: TClientInsertTrigger;

    FClientGetDescription: TClientGetDescription;

    FClientSetup: TClientSetup;

    FDescription: String;

    FUseTrigger: Bool;

  protected

    procedure DoDllLoaded; override;

    procedure DoDllUnLoaded; override;

  public

    constructor Create; override;

    property ClientGetDescription: TClientGetDescription read FClientGetDescription;

    property ClientInitialize: TClientInitialize read FClientInitialize;

    property ClientInsertTrigger: TClientInsertTrigger read FClientInsertTrigger;

    property ClientSetup: TClientSetup read FClientSetup;

    property Description: String read FDescription write FDescription;

    property UseTrigger: Bool read FUseTrigger write FUseTrigger;

  end;

 

implementation

 

{ TClientDll }

 

constructor TClientDll.Create;

begin

  inherited;

  FClientInitialize := nil;

  FClientInsertTrigger := nil;

  FClientGetDescription := nil;

  FClientSetup := nil;

end;

 

procedure TClientDll.DoDllLoaded;

begin

  FClientInitialize := GetProcAddress(csClientInitialize);

  if not Assigned(FClientInitialize) then

    raise EClientDllError.Create(''''No found of Proc "ClientInitialize".'''');

  FClientInsertTrigger := GetProcAddress(csClientInsertTrigger);

  if not Assigned(FClientInsertTrigger) then

[1] [2] [3]  下一页

打印本文 打印本文 关闭窗口 关闭窗口