wilddeer ·
·
阅读: 560
里面有个例子。注意:如果在Dll中是多线程,就要改成发消息
举个例子:
DLL中:
type
TCallBackFunc = procedure(x,y: integer);stdcall;
var
CallBackFunc: TCallBackFunc;
//赋值接口
procedure SetCallBackFunc(Func: TCallBackFunc);stdcall;
begin
CallBackFunc := Func;
end;
DLL中调用:
if assigned(CallBackFunc) then CallBackFunc(CommonData.MousePos.x,CommonData.MousePos.y);
---------------------------
外部调用程序:
type
TCallBackFunc = procedure(x,y: integer);stdcall;
procedure SetCallBackFunc(Func: TCallBackFunc);stdcall; external '../mousehook.dll';
procedure MyCallBack(x,y: integer);stdcall;
begin
Form1.Caption := format('%d:%d',[x,y]);
end;
//赋值
SetCallBackFunc(MyCallBack);