手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>delphi>列表

插件管理框架 for Delphi(二)

来源:互联网 作者:西部数码 时间:2008-04-09
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
o 子类可通过覆盖override DoDllLoaded, 以及DoDllUnLoaded进行功能扩展;
}
TDll = Class(TObject)
private
FOwner: TDllManager;
FModule: HMODULE;
FFileName: String;
FPermit: Boolean;
procedure SetFileName(const Value: String);
function GetLoaded: Boolean;
procedure SetLoaded(const Value: Boolean);
procedure SetPermit(const Value: Boolean);
protected
procedure DoDllLoaded; virtual;
procedure DoBeforeDllUnLoaded; virtual;
procedure DoDllUnLoaded; virtual;
procedure DoFileNameChange; virtual;
procedure DoPermitChange; virtual;
public
constructor Create; virtual;
destructor Destroy; override;
function GetProcAddress(const Order: Longint): FARPROC; overload;
function GetProcAddress(const ProcName: String): FARPROC; overload;
property FileName: String read FFileName write SetFileName;
property Loaded: Boolean read GetLoaded write SetLoaded;
property Owner: TDllManager read FOwner;
property Permit: Boolean read FPermit write SetPermit;
end;
implementation
{ TDll }
constructor TDll.Create;
begin
FOwner := nil;
FFileName := '''''''';
FModule := 0;
FPermit := True;
end;
destructor TDll.Destroy;
var
Manager: TDllManager;
begin
Loaded := False;
if FOwner <> nil then
begin
//在拥有者中删除自身
Manager := FOwner;
//未防止在 TDllManager中重复删除,因此需要将
//FOwner设置为 nil; <-- 此段代码和 TDllManager.Notify 需要配合
//才能确保正确。
FOwner := nil;
Manager.Remove(Self);

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!