我写了一个全局的钩子,在钩子里我用SENDMESSAGE 发送了一个 WM_SYSCOMMAND 消息,但我不知道在我的程序中哪里捕获这个消息.我在OnSysCommand,PreTranslateMessage,DefWindowProc 里都捕获不到这个消息,我的是一个对话框程序,我的意图是用全局钩子在屏保启动前捕获WM_SYSCOMMAND中wParam为SC_SCREENSAVE消息,然后发送给我的对话框程序,然后我的程序就会做一些处理,
先谢谢大家了

解决方案 »

  1.   

    能不能说详细点, PeekMessage在哪里啊, 我的是对话框程序! 谢谢
      

  2.   

    估计是SendMessage没发送到你想像的窗口
      

  3.   

    看下SendMessage的定义:
    LRESULT SendMessage(
      HWND hWnd,      // handle to destination window
      UINT Msg,       // message
      WPARAM wParam,  // first message parameter
      LPARAM lParam   // second message parameter
    );
    在hWnd填上你想要收到该消息的窗口句柄,然后在改窗口句柄所在的程序处理WM_SYSCOMMAND消息就可以了。
      

  4.   

    把消息发送的窗口句柄赋值为你的对话框程序的窗口句柄就可以了,这样你的窗口就能收到消息了。可以先用FindWindow查找你的对话框程序的窗口句柄,FindWindow的定义如下:
    HWND FindWindow(
      LPCTSTR lpClassName,  // class name
      LPCTSTR lpWindowName  // window name
    );
      

  5.   

    dll中
    FindWindow获得对话框句柄
    sendMessage()
    dlg中
    PeekMessage()