CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  网络通信/分布式开发

Service Application怎么来接收消息?

楼主crbb(不懂就问)2006-03-04 08:32:34 在 Delphi / 网络通信/分布式开发 提问

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

1 楼sdzeng(大头鸟)回复于 2006-03-04 12:33:33 得分 30

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

2 楼clasj(★知我☆)回复于 2006-03-04 20:37:52 得分 40

大头鸟果然头大:)  
   
  我写了个线程接收消息的例子。  
   
  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.Top

3 楼baiduan(-_-化杯粪喂力量-_-)回复于 2006-03-09 13:21:30 得分 10

过来学习。  
  大头鸟。。。  
  九头鸟。。。  
  论坛都成鸟巢了。Top

4 楼unsigned(僵哥(发站内消息,请附上链接或问题说明,否则不予回复))回复于 2006-03-09 13:25:06 得分 20

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

相关问题

  • 消息接收,急
  • 关于消息的接收?
  • 发送接收消息
  • 消息接收问题
  • 接收WM_COPYDATA消息的办法?
  • 在线程中如何接收消息?
  • 关于接收windows消息的问题
  • SendMessage发消息,怎样用PeekMessage接收
  • 关于消息接收的问题?
  • WebControl怎样接收一个keydown消息

关键词

  • 消息
  • 线程
  • application
  • service
  • tmythread
  • 窗体
  • threadid
  • postthreadmessage
  • cardinal
  • 方法

得分解答快速导航

  • 帖主:crbb
  • sdzeng
  • clasj
  • baiduan
  • unsigned

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo