delphi 在DLL中添加窗体.

方案一:

  在DLL工程中新建一个FORM窗体.在窗体中加入如下代码:

  1.首先需要再 implementation 之前声明下以下函数.

 1  procedure SynApp(App:THandle);stdcall;
 2 
 3    begin
 4 
 5     Application.Handle := App ;   
 6 
 7    end;
 8 
 9 
10   Procedure ShowForm;stdcall ;
11 
12   begin
13 
14     MainForm := TMainForm.Create(Application);
15 
16     MainForm.show ;
17 
18   end;

 

  2.在DLL文件中导出表写入:

  

1 exports 
2 
3   SynApp,
4 
5   ShowForm;

 

  3.让窗口显示需要传入进程句柄.

1 SynApp(Application.Handle);
2 
3   ShowForm;

 

  完成.

方案二.此方案来自郁金香老师.

  1.新建DLL.在DLL文件中添加一个FORM.

  先在DLL文件中添加如下关键代码:

  

 1 if Form1 = nil then begin Form1.:= TForm1.Create(nil);
 2 
 3   Form1.Visable: = not From1.Visable ;
 4 
 5   end;
 6 
 7       //但是这样子会有问题..如果卸载这个DLL的时候,相应的程序也会跟着退出.
 8 
 9   //所以必须写一个加载卸载处理函数
10 
11   procedure DllEnterProc(reason:integer);
12 
13   begin
14 
15     case reason of
16 
17     windows.DLL_PROCESS_ATTACH: begin end;
18 
19     windows.DLL_PROCESS_DETACH:begin Form1.Free;Form1.nil; end;
20 
21   end;
22 
23   

  在最后一个end.  之前添加如下关键代码:

  

1 dllProc:=@DllEnterProc ;

 

  完成..这样既可创建含有窗体的DLL文件.

 

  

 

posted @ 2016-03-13 18:01  爪爪熊  阅读(2073)  评论(0编辑  收藏  举报