LRESULT CALLBACK CallWndProc( int nCode, WPARAM wParam, LPARAM lParam ) 

DWORD dwPIDWatched; 

if( dwCurrentPID == 0 ) 

dwCurrentPID = GetCurrentProcessId(); 
HWND hwndMainHook; 
hwndMainHook = ::FindWindow( 0, "SockintoMain" ); 
dwPIDWatched = ::SendMessage( hwndMainHook, (WM_USER+100), 0, 0 ); 
hOldHook = (HHOOK)::SendMessage( hwndMainHook, (WM_USER+101), 0, 0 );  if(dwPIDWatched==dwPIDWatched)
………………………………………………MSDN上的解释是sendMessage返回值The return value specifies the result of the message processing; it depends on the message sent.我想知道这段程序他返回的是什么值。特别是dwPIDWatched和dwPIDWatched的比较需要利用这个值。另外WM_USER在这里有什么意义?
小弟是新手,望高人指教。

解决方案 »

  1.   

    WM_USER 自定义消息的起始值
      

  2.   

    就是LRESULT类型
    你定义的消息处理函数的返回值
    如果是系统的,也同样
    例如:
    LRESULT OnMyMessage(WPARAM,LPARAM)
    {
     return 0;
    }
    那么就是0了
      

  3.   

    就是LRESULT类型
    你定义的消息处理函数的返回值
    如果是系统的,也同样
    例如:
    LRESULT OnMyMessage(WPARAM,LPARAM)
    {
     return 0;
    }
    那么就是0了
      

  4.   

    哦,似乎明白了。那么我要怎么才能得到某个进程的ID?这段程序似乎是期望能通过sendmessage的返回值取得ID。
      

  5.   

    这段函数返回LRESULT就是32bit值。GetCurrentProcessId();//得到当前进程ID.
    #define WM_USER       0x0400  //WM_USER 就是常量
    SendMessage( hwndMainHook, (WM_USER+100), 0, 0 ); //向SockintoMain窗口发送消息ID为0x0400+100的消息。
    这个消息是用户自定义消息。