可以使用接口来处理,先在公共单元里声明一个接口例如:
IPulgInput = interface
function GetInputString: string;
end;
在DLL的窗体里使用这个接口,把接口挂在窗口类后面,类似这样
TForm1 = class(TForm, IPulgInput)
private
function GetInputString: string;
...
end;
//声明一个生成接口实例的函数:
function LoadPulgInput: IPulgInput;
//在DLL窗体的实现部分实现之:
function LoadPulgInput: IPulgInput;
begin
Result := TForm1.Create(nil);
end;
function TForm1.GetInputString: string;
begin
result := edit1.text;
end;
在宿主程序里调用方法:
var
intf: IPlugInput;
begin
intf := LoadPulgInput;
ShowMessage(intf.GetInputString);
end;
注:在DLL的Program的Uses部分,第一行应该写上ShareMem,表示使用borlandmm.dll做为内存管理员,宿主程序也一样
Dll中调用接口写成传参并且有返回值类型的函数,在应用程序中调用,并在程序中通过返回值和传回来的参数进行操作