如题,我想获取一个窗口Post出去的消息,得到HWND,消息号,参数,请高手指教

解决方案 »

  1.   

    用GetMessage函数试试
    BOOL GetMessage(LPMSG lpMsg,HWND hWnd,UINT wMsgFilterMin,UINT wMsgFilteMax)
      参数:
      lpMsg:指向MSG结构的指针,该结构从线程的消息队列里接收消息信息。
      hWnd:取得其消息的窗口的句柄。这是一个有特殊含义的值(NULL)。GetMessage为任何属于调用线程的窗口检索消息,线程消息通过PostThreadMessage寄送给调用线程。
      wMsgFilterMin:指定被检索的最小消息值的整数。
      wMsgFilterMax:指定被检索的最大消息值的整数。
      

  2.   

    开玩笑?没有HWND怎么PostMessage,还要获得句柄,诡异~
      

  3.   

    你在Post 发送消息之前,自己保存它的参数好了
      

  4.   

    Hook SendMessage PostMessage
      

  5.   

    一个窗口Post出去的消息,得到HWND
    ---------------------------------
    你既然知道哪个窗口了,那么HWND也自然知道了啊。可以Hook PostMessage,根据HWND参数判断是不是你要窗口的消息
      

  6.   

    我还想问个问题,0x118号消息就是WM_SYSTIMER消息的WPARAM和LPARAM分别是什么意思啊
      

  7.   

    WPARAM是wTimerId,LPARAM是定时器函数的指针地址
      

  8.   

    wTimerID = wParam;             // timer identifier 
    tmprc = (TIMERPROC *) lParam;  // address of timer callback 
      

  9.   

    MSG msg;
    while(1)
    {
       if (!PeekMessage(&msg,NULL,0,0,PM_NOREMOVE))
           continue;
       if (msg.message == WM_QUIT)
           break;
       ...
       msg.hwnd;
       msg.message;
       msg.wParam;
       msg.lParam;
    }PeekMessage同GetMessage一样,不过PeekMessage只是查询消息的作用,它的最后一个参数给PM_NOREMOVE可以不从系统的消息队列中删除消息。
      

  10.   

    我HOOK掉了PostMessage为什么只有我自己进程调用了PostMessage才响应呢
      

  11.   

    http://blog.csdn.net/photowen/archive/2009/05/23/4210951.aspx
    可以看看我的这个文章,是获得窗口的句柄之后得到窗口的标题,对您可能有帮助!