现在有一程序需要做成Service Application的形式 设定为服务
但程序需要与一DLL进行消息通讯 也就是说要接收来自这个DLL的消息做成一般的Application的时候可以正常相应 但Service Application没有WndProc的麻烦各位老大帮忙看看 最好给个小例子

解决方案 »

  1.   

    方法一、在Service Application里建一个窗体,
    用SendMessage发送消息给窗体,在窗体里有WndProc
    方法二、自己写一个消息循环,用GetMessage/PeekMessage检测消息
    用PostThreadmessage发送线程消息具体做法可以看看这篇帖子
    http://www.delphibbs.com/delphibbs/dispq.asp?lid=105410
      

  2.   

    大头鸟果然头大:)我写了个线程接收消息的例子。program Project1;{$APPTYPE CONSOLE}uses
      Windows, Classes, Messages;type
      TMyThread = class(TThread)
      public
        class function Create: Cardinal;
      protected
        procedure Execute; override;
      end;{ TMyThread }class function TMyThread.Create: Cardinal;
    begin
      with inherited Create(false) do
      begin
        FreeOnTerminate:=true;
        Result:=ThreadID;
      end;
    end;{ TMyThread }procedure TMyThread.Execute;
    var
      Msg: TMsg;
    begin
      while GetMessage(Msg, 0, 0, 0) do
        WriteLn(Msg.message);
    end;var
      ThreadID: Cardinal;
      i: integer;
    begin
      ThreadID:=TMyThread.Create;
      Sleep(0); //给一点时间创建线程
      for i:=0 to 9 do
        PostThreadMessage(ThreadID, i, 0, 0);
      PostThreadMessage(ThreadID, WM_QUIT, 0, 0); //结束消息循环(线程也销毁了)
      ReadLn;
    end.
      

  3.   

    使用使用管道、邮槽也可以,或者再笨点的方法可以使用socket,使用文件(监视文件变化)等等,方法多的是了,关键就是看你如果处理。