天天看点

delphi实现调用dll中的窗体 代码

新建一个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通过!

继续阅读