16,748
社区成员
发帖
与我相关
我的任务
分享
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
Tfunc = function (sParam: string): Boolean; stdcall;
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Memo1: TMemo;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
aFun: TFunc;
public
{ Public declarations }
function CallBackFun: Tfunc;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
//
end;
function TForm1.CallBackFun: Tfunc;
var
CallFunc: Tfunc;
libHandle: THandle;
begin
libHandle := LoadLibrary(PChar('Project1.dll'));
@CallFunc := GetProcAddress(libHandle, PChar('Test'));
Result := CallFunc;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
aFun := Pointer(CallBackFun);//保存函数地址
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
if aFun('123') then//调用
ShowMessage('True')
else
ShowMessage('False');
end;
end.