这是传Application 到动太库的. 但这是无模式窗体.如何在释放窗体时将DLL释放掉呢? 动太库代码如下(只列出相关接口): function OpenFrm( Scr: TScreen; hApp:TApplication): Boolean; Stdcall; begin Application:= hApp; Screen := Scr; Application.CreateForm(Tfrm,Frm); Frm.Show; Result := True; end; procedure DLLEntryPoint(Reason: Integer); begin case Reason of DLL_PROCESS_ATTACH : begin DLLApp := Application; DLLScr := Screen; end; DLL_PROCESS_DETACH : begin Application := DLLApp; Screen := DLLScr; end; end; end; exports OpenFrm; begin DLLProc :=@DLLEntryPoint ; DllEntryPoint(DLL_PROCESS_ATTACH); end. 主程序调用如下: 定义接口:type TOpenFrm=function ( Scr: TScreen; hApp:TApplication): Boolean;Stdcall; 调用内容 var Openfrm:TOpenFrm; MyHandle:THandle; begin MyHandle:=Loadlibrary('Form.dll'); if MyHandle>0 then begin @Openfrm:=GetProcAddress(MyHandle,'OpenFrm'); if @Openfrm<>nil then Openfrm(Screen,Application); end else freeLibrary(MyHandle); end; |
|