1、Delphi编写的Dll,就是windows的Dll,其它语言都可以调用。
2、你所说的功能,timer是一个长效实体对象(不停地计时),它最好借宿在一个form对象中。
3、Dll与主程序之间,是不能共享参数的,如果通过函数值,返回数据。只能调用一次返回一次。
4、当然还可以通过共享内存,方式返回参数。

解决方案 »

  1.   

    lyhoo163你好,谢谢你,我研究一下
      

  2.   

    只要DLL写的规范,任何语言都可调用。
    DLL没有自己的消息队列吧,也没有自己的线程,DLL是给程序调用的,不应该做不相干的事情。
      

  3.   

    dll中可以通过AllocateHWnd建立一个句柄用来进行消息循环,简单示例如下library dll_timer;uses
      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及回调调用者提供的回调函数,这一切都取决于你自己的需求。