DELPHI 调用DLL文件中FORM的调用[2]
主程序:
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Menus,Vcl.StdCtrls, cxButtons, cxPC, Vcl.ExtCtrls,Vcl.ComCtrls;
const WM_MYMESSAGE=WM_USER+1;
type
TCallBaseForm=procedure(ParentApp:TApplication;THandle:HWND);
Tmainfrm = class(TForm)
Panel1: TPanel;
cxButton1: TcxButton;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
procedure cxButton1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
mainfrm: Tmainfrm;
implementation
{$R *.dfm}
procedure Tmainfrm.cxButton1Click(Sender: TObject);
var
FCallBack:TCallBaseForm;
DllHandle:THandle;
begin
DllHandle:=LoadLibrary('TestDll.dll');
if DllHandle<>0 then
begin
@FCallBack:=GetProcAddress(DllHandle,'CallTestForm');
if Assigned(FCallBack) then
begin
FCallBack(Application,Handle);
end;
end;
end;
end.
Dll 文件
unit Frmdll;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ImgList, ActnList, ComCtrls, ToolWin, StdCtrls, cxButtons,Unit2;
type
TDllfrm = class(TForm)
cxButton1: TcxButton;
private
{ Private declarations }
TabID: Integer;
public
{ Public declarations }
end;
procedure CallTestForm(ParnentApp:TApplication;FHandle:HWND);
var
Dllfrm: TDllfrm;
implementation
{$R *.dfm}
procedure CallTestForm(ParnentApp:TApplication);
begin
Application:=ParnentApp;
Dllfrm:=TDllfrm.Create(Application);
Dllfrm.TabID:=FHandle;
Dllfrm.Show;
end;
end.
运行效果图:
📱 扫码关注公众号
扫描二维码关注我们,获取更多精彩内容
实时更新 · 干货满满
![点击查看原图 DELPHI 调用DLL文件中FORM的调用[2]](/content/uploadfile/201708/66571501834529.png)