我现有一个DLL文件(Bak_Data.dll),dll文件中包含一个窗体(BakForm)DLL中输出的过程为:procedure BakForm_Show;stdcall;
begin
  if BAKForm=nil then
  BAKForm:=TBAKForm.Create(Application);
  BAKForm.Show;
end;请问如何在EXE程序中动态调用这个DLL窗体,静态的方式我会,动态的老是不成功,请高手指点下!

解决方案 »

  1.   

    我在主程序中是这样写的:procedure TMainForm.N1Click(Sender: TObject);
    var
      BakDll:THandle;begin  BakDll:=LoadLibrary('Bak_Data.dll');
      try
        begin
        if BakDll<>0 then
         begin
          BakForm_Show:= GetProcAddress(BakDll,'BakForm_Show')
          
          end else
          RaiseLastWin32Error;
         end;
        finally
          FreeLibrary(BakDll);    end;
    end;这中间还差点代码来调用窗体,请问该如何写呢
      

  2.   

    在DLL中写一个导出函数
    function SelectName(const Names:PChar):PChar;stdcall;export;
    begin
      FrmSelName :=TFrmSelName.Create(nil);
      Try
        frmSelName.Listbox1.Items.clear;
        frmSelName.Listbox1.Items.AddStrings(Names);
        ....
        ShowModal;
      Finally
        FrmSelName.Free;
      end;
    end;