1、Delphi编写的Dll,就是windows的Dll,其它语言都可以调用。
2、你所说的功能,timer是一个长效实体对象(不停地计时),它最好借宿在一个form对象中。
3、Dll与主程序之间,是不能共享参数的,如果通过函数值,返回数据。只能调用一次返回一次。
4、当然还可以通过共享内存,方式返回参数。
2、你所说的功能,timer是一个长效实体对象(不停地计时),它最好借宿在一个form对象中。
3、Dll与主程序之间,是不能共享参数的,如果通过函数值,返回数据。只能调用一次返回一次。
4、当然还可以通过共享内存,方式返回参数。
DLL没有自己的消息队列吧,也没有自己的线程,DLL是给程序调用的,不应该做不相干的事情。
SysUtils,
Classes,
Messages,
Windows;type
TDllTimer = class
private
FHwnd: HWND;
FTimerHwnd: HWND;
protected
procedure OnMessage(var Message: TMessage);
public
constructor Create();
destructor Destroy; override;
end;{$R *.res}{ TDllTimer }constructor TDllTimer.Create;
begin
FHwnd := AllocateHWnd(OnMessage);
FTimerHwnd := SetTimer(FHwnd, 0, 1000, nil);
end;destructor TDllTimer.Destroy;
begin
KillTimer(FTimerHwnd, 0);
DeallocateHWnd(FHwnd);
end;procedure TDllTimer.OnMessage(var Message: TMessage);
begin
case Message.Msg of
WM_TIMER:
begin
OutputDebugString('On Timer');
end;
end;
end;var
dlltimer: TDllTimer;begin
dlltimer := TDllTimer.Create;
end.加载此dll后,每秒会输出一个调试字串,这是一个典型的在dll中处理消息的例子,你可以封装的更加完善,例如多Timer及回调调用者提供的回调函数,这一切都取决于你自己的需求。