请问怎样调用dll的类的所有过程? ( 积分: 50 )

  • 主题发起人 主题发起人 anick
  • 开始时间 开始时间
A

anick

Unregistered / Unconfirmed
GUEST, unregistred user!
我的程序中必须要调用一些dll来扩充功能,类似插件技术
现在exe文件已经可以用约定好的InitPlugins函数来加载dll,并由dll返回一个自定义class(该class中的一些变量和函数也是约定好的)

我现在需要在exe中,调用dll返回的class中的这些函数
例如:class下有个Click,其中有N行代码,假设我程序中有某一按钮,我想把按钮的onclick事件交给class的click来处理

望给与准确的答复,如能有范例,感谢万分
 
DLL都返回了你约定好的自定义class,还有什么问题吗?返回给你了,你直接用就行了啊?就好像你要邻居借给你个扳手(dll返回的class),你拿到手上直接就可以用了,难道还有什么困难吗?
 
比如,dll返回你了个对象,是DllClassA,那么它有个Click方法,你的界面上有个Button,那么在你的Button中直接调用dllClassA.Click就可以了。
procedure Tform1.button1click(Sender: TObject);
begin
DllClassA.Click;
end;
 
似乎我没说清楚意思,比如我在程序里面定义了一个类

type TPlugins = class
Name : PChar;
Version : PChar


public
procedure Click(Sender : TObject);
procedure OnTimer(Sender: TObject);
function Execute : Boolean;stdcall;
function Stop : Boolean;stdcall;
end;

APlugins := TPlugins;
然后dll里面也是这样定义的,我如果用APlugins.Click方法,执行的是程序里面的对象定义,而不是dll里面的Click,我的意思就是想执行dll里面已经写好的方法
 
你可以找一些 Delphi反射的资料看看,或者用 BPL来的更简单:)
 
dcms说的似乎很好,不过还是不太明白

看上面的class例子我已经可以从入口函数InitPlugins返回的TPlugins中获得了Name和Version两个属性,要调用下面四个过程和函数,我想应该只是一步之遥了吧!但是就是不明白怎样使程序的TPlugins去沿用dll返回回来的TPlugins的过程和函数
 
问题已经解决了,使用interface接口可以很好的解决,谢谢
 
接受答案了.
 
后退
顶部