怎样在windows下使用系统的消息队列,我有一个日志接口com,要从A机器写日志数据到另外一台机器B上的消息队列,在B机器上处理消息队列,将消息取出根据不同的消息写B机器上不同的日志表中。请问,我要怎样做,请高手给出具体步骤,比如要用到些什么函数。
 谢谢

解决方案 »

  1.   

    看一下这篇文章:
    http://tech.china.com/zh_cn/netschool/programme/c/656/20001207/01_12.html看完之后问题应该就解决了
      

  2.   

    他指的说不定是,Message Queue,是吧,我不会帮你up或者也许看看书会知道
      

  3.   

    没有编写过,给你一些建议,首先的两台机器的通讯,使用rpc或者相关的dongxi,第二的进程的操作函数,第三,拦截消息的hook,觉得最基本的应该是这几个了
      

  4.   

    我觉得他问的好像是Message Queue方面的,
    可以把消息存为一种固定格式的文件,然后两边统一处理,
    我以前用过消息队列的东西,不过是IBM的MQ Series
      

  5.   

    //////操作系统为当前所运行的每个应用程序中的每个UI线程,都维护一个自己的消息队列。每当产生消息时,操作系统将该消息放入相应应用程序的相应线程的消息队列中,线程再通过GetMessage从自己的这个消息队列中获得消息。///////线程在第一次调用PeekMessage(大概是这个函数,我记不清了)时,为其创建数个消息队列,用于存放不同消息,但对我们表现为一个抽象的消息队列。
    输入消息产生时,先让HOOK处理,然后发给当前获得输入焦点的程序或鼠标所在的窗口。其他消息或发给注册了指明要该消息的窗口,或就是有一个目标窗口(就是SendMessage之类)。////////不是每个线程都有消息队列的,只有那些有调用UI函数的线程才会被分配一个THREADINFO结构,进而有它自己的消息队列。windows有两种形式的消息队列,应用程序队列和系统队列。有些消息是放在应用程序队列中的,比如某个窗口的一些重绘事件。
    另外一些消息是放在系统队列中的,比如鼠标事件。也就是说消息如果只与单个应用有关就会放在应用程序队列中,而与系统有关就会放在系统队列中。
    1.队列消息和非队列消息 从消息的发送途径上看,消息分两种:队列消息和非队列消息。队列消息送到系统消息队列,然后到线程消息队列;非队列消息直接送给目的窗口过程。这里,对消息队列阐述如下:Windows 维护一个系统消息队列(System message queue),每个GUI线程有一个线程消息队列(Thread message queue)。 
    鼠 标、键盘事件由鼠标或键盘驱动程序转换成输入消息并把消息放进系统消息队列,例如WM_MOUSEMOVE、WM_LBUTTONUP、WM_KEYDOWN、WM_CHAR等等。Windows每次从系统消息队列移走一个消息,确定它是送给哪个窗口的和这个窗口是由哪个线程创建的,然后,把它放进窗口创建线程的线程消息队列。线程消息队列接收送给该线程所创建窗口的消息。线程从消息队列取出消息,通过Windows把它送给适当的窗口过程来处理。 
    除了键盘、鼠标消息以外,队列消息还有 WM_PAINT、WM_TIMER和WM_QUIT。 
    这些队列消息以外的绝大多数消息是非队列消息。
    2.系统消息和应用程序消息 从消息的来源来看,可以分为:系统定义的消息和应用程序定义的消息。系统消息ID的范围是从0到WM_USER-1,或0X80000到0XBFFFF;应用程序消息从WM_USER(0X0400)到0X7FFF,或0XC000到0XFFFF;WM_USER到0X7FFF范围的消息由应用程序自己使用;0XC000到0XFFFF范围的消息用来和其他应用程序通信,为了ID的唯一性,使用::RegisterWindowMessage来得到该范围的消息ID。
      

  6.   

    试试MSMQ(Microsoft Message Queuing Services).查查MSDN.有介绍的.
    或者http://www.microsoft.com/msmq