新建一个dLL工程,新建一个窗体 Fr_bb80 ,我们先在它的单元里加入下面一个函数:
function Report(Title:Pchar):Boolean ;stdcall;
begin
if Fr_bb80=nil then
begin
Fr_bb80:=TFr_bb80.Create(application);
Fr_bb80.Caption:= Title;
try
Fr_bb80.ShowModal;
Result:=true;
finally
Fr_bb80.Free;
end;
end;
Result:=false;
end;
再在此dll工程文件(*dpr)文件中加入
exports Report; //加入这个之后,外面就可以调用这个函数了.
新建一个工程,在新窗体中加一个按钮,下面就是这个按钮的完全代码:
type
TLoadDLL2 = function(Title:Pchar):Boolean; stdcall; //这个是必须的,好像叫回调函数??,它的定义与dll中公开的函数要完全一致
var
FLoad: TLoadDLL2; //将TLoadDLL2 实例化
l:THandle;
begin
l:=LoadLibrary('CW.dll'); //动态调用刚才那个dll文件
// 给FLoad函数赋值,将指针指向 GetProcAddress(l, 'Report') ;"Report" 是这个dll公开的函数名
FLoad := TLoadDLL2(GetProcAddress(l, 'Report'));
if Assigned(FLoad) then //判断是否找到这个公开的函数
FLoad('自定义窗口的标题'); //执行函数,注意函数的参数到这时候才开始赋值
FreeLibrary(l); //释放资源
以上代码在delphi7.0通过!