DLL链接库代码
Library Project1; uses Forms, Unit1 in 'Unit1.pas' {Form1}; Function ShowForm(AHandle:THandle):Boolean;StdCall; var AForm:TForm1; begin Result:=False; Application.Handle:=AHandle; AForm:=TForm1.Create(Application); Try AForm.ShowModal; Result:=True; Finally AForm.Free; end; end; {$R *.res} exports ShowForm; begin end.
Form中调用代码
unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; TShowForm=Function (AHandle:THandle):Boolean;Stdcall; //001 var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var mainfrm,DllForm:THandle; //002 ShowForm:TShowForm; //003 begin mainfrm:=Form1.Handle; //004 DllForm:=LoadLibrary('hello.dll'); //005 Try begin if DllForm<>0 then begin @ShowForm:=GetProcAddress(DllForm,'ShowForm'); ShowForm(mainfrm); end else begin RaiseLastWin32Error; end; end; Finally FreeLibrary(DllForm); end; end; procedure TForm1.FormCreate(Sender: TObject); begin end; end.
原创文章,作者:3628473679,如若转载,请注明出处:https://blog.ytso.com/192960.html