📄 unit1.pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TFrameClass = class of TFrame;
//注意 必须是class of TFrame而不是 class(TFrame)
//class of TFrame 声明的是类类型 f:TFrameClass是一个类
//class(TFrame) 是声明一个类, 这个类继承了TFrame类 f: TFrame; 是一个对象
TGetDllFrameClass = function (App:THandle;frm:THandle):TFrameClass;stdcall;
TGetDllFormClass = function (App:THandle;frm:THandle):TFormClass;stdcall;
type
TForm1 = class(TForm)
btn1: TButton;
pnl1: TPanel;
btn2: TButton;
procedure btn1Click(Sender: TObject);
procedure btn2Click(Sender: TObject);
private
DLLHandle: THandle;
GetDllFrameClass: TGetDllFrameClass;
GetDllFormClass: TGetDllFormClass;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
var
TMP:TFrameClass;
tmp2:TFrame;
TMP3:TFormClass;
tmp4:TForm;
{$R *.dfm}
procedure TForm1.btn1Click(Sender: TObject);
begin
DLLHandle := LoadLibrary('DLL.dll');
try
@GetDllFrameClass := GetProcAddress(DLLHandle, 'GetDllFrameClass');
if @GetDllFrameClass = nil then
Abort;
tmp:=GetDllFrameClass(application.Handle,Self.Handle);
tmp2:=TMP.Create(self);
tmp2.Parent:=pnl1;
tmp2.Show;
except
raise;
end;
end;
procedure TForm1.btn2Click(Sender: TObject);
begin
DLLHandle := LoadLibrary('DLL.dll');
try
@GetDllFormClass := GetProcAddress(DLLHandle, 'GetDllFormClass');
if @GetDllFormClass = nil then
Abort;
tmp3:=GetDllFormClass(application.Handle,Self.Handle);
Application.CreateForm(tmp3,tmp4);
tmp4.Show;
except
raise;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -