关于接口, 插件的问题!(如何用Delphi的接口实现插件?)
以下是我的办法, 我觉得不好, 请大家给个好的意见!
[dll]
uses
SysUtils,
Classes,
Dialogs,
Plug in 'Plug.pas';
type
TDocument = class(TInterfacedObject, IDocument)
private
FStrings: string;
public
procedure Created;
procedure Destroyed;
procedure CreateString(str: string);
function ResultString: string;
end;
{$R *.res}
var
Document: IDocument;
{ TDocument }
procedure TDocument.Created;
begin
ShowMessage('Document is created');
end;
procedure TDocument.CreateString(str: string);
begin
FStrings := str + 'one';
end;
procedure TDocument.Destroyed;
begin
ShowMessage('Document is destroyed');
end;
function TDocument.ResultString: string;
begin
Result := FStrings;
end;
function CreateClass(): IDocument; stdcall;
begin
Document := TDocument.Create();
Result := Document;
end;
exports
CreateClass name 'CreateClass';
begin
end.
[定义的接口]
unit Plug;
interface
uses Windows;
type
IDocument = interface
procedure Created;
procedure Destroyed;
procedure CreateString(str: string);
function ResultString: string;
end;
有几个问题, 我除了在dll里放一个CreateClass方法, 来导出IDocument外, 实在想不出其它方法了, 大家可以帮我想想还有什么别的方法么? 还有一个就是, 在主程序里FreeLibrary的时候, 会出问题, 我搜过以前的一个贴子说要导出接口, 不知道他是怎么导的, 没有源码, 谁知道这个问题, 请回答, 谢谢了!
[dll]
uses
SysUtils,
Classes,
Dialogs,
Plug in 'Plug.pas';
type
TDocument = class(TInterfacedObject, IDocument)
private
FStrings: string;
public
procedure Created;
procedure Destroyed;
procedure CreateString(str: string);
function ResultString: string;
end;
{$R *.res}
var
Document: IDocument;
{ TDocument }
procedure TDocument.Created;
begin
ShowMessage('Document is created');
end;
procedure TDocument.CreateString(str: string);
begin
FStrings := str + 'one';
end;
procedure TDocument.Destroyed;
begin
ShowMessage('Document is destroyed');
end;
function TDocument.ResultString: string;
begin
Result := FStrings;
end;
function CreateClass(): IDocument; stdcall;
begin
Document := TDocument.Create();
Result := Document;
end;
exports
CreateClass name 'CreateClass';
begin
end.
[定义的接口]
unit Plug;
interface
uses Windows;
type
IDocument = interface
procedure Created;
procedure Destroyed;
procedure CreateString(str: string);
function ResultString: string;
end;
有几个问题, 我除了在dll里放一个CreateClass方法, 来导出IDocument外, 实在想不出其它方法了, 大家可以帮我想想还有什么别的方法么? 还有一个就是, 在主程序里FreeLibrary的时候, 会出问题, 我搜过以前的一个贴子说要导出接口, 不知道他是怎么导的, 没有源码, 谁知道这个问题, 请回答, 谢谢了!
...全文
相关推荐
使用Delphi开发的插件框架
使用Delphi开发的插件框架,方便编程基础人员学习插件技术,含有全部源代码,编程人员可在此基础上增加自己的功能
基于DELPHI的Office插件开发实战项目
DELPHI开发的Office插件通过COM技术深度集成Excel、Word和Outlook等应用程序,实现企业级自动化办公。其典型应用场景包括:财务报表自动生、合同批量生成、邮件智能推送及数据采集标准化。依托VCL框架与类型库(TLB)封装,开发者可高效调用Office对象模型,结合窗体界面与后台逻辑解耦设计,提升维护性。该类插件广泛应用于金融、制造与政务领域,支持本地化部署与高安全性控制,满足对数据隐私和定制化要求较高的业务需求。
Delphi 利用RTTI实现的插件管理模块,插件可自动注册。
Delphi 利用RTTI实现的插件管理模块,插件可自动注册。
delphi DLL插件框架源码
DLL插件的完整代码和EXE,借鉴了咏南工作室的Delphi插件框架(在此表示感谢),本人加入了MDI窗体实现功能,DLL窗体之间通讯的功能,DLL窗体和主框的通讯功能。希望对大家有所帮助
Delphi插件制作
Plugin DLL插件制作全示例,内含有源码,Dll源码


Windows SDK/API
