LRESULT CALLBACK GetMsgProc(int code,WPARAM wParam,LPARAM lParam)
{
PMSG pMsg=(PMSG)lParam;
if(pMsg->message == WM_COPYDATA)
{
PostMessage(g_hwnd,UM_COPY,0,0);
}
return CallNextHookEx(g_hook,code,wParam,lParam);
}
这是我的回调函数,UM_COPY是自定义消息
之前捕获WM_PAINT都成功了,但是我想要捕获用户按下Ctrl+c我之前之前用键盘钩子发现不能捕获Ctrl+c于是我就用消息,但是WM_COPY这消息不行~~
当用户按下Ctrl+c时有什么消息发生吗?另外如何用键盘钩子捕获Ctrl+c

解决方案 »

  1.   

    监视键盘消息,捕获C,判断Ctrl状态
      

  2.   

    怎么写?一次只有一个wParam一个键,难道是:
    long tmp = lParam;
    if(wParam == VK_CONTROL && (tmp>>30 & 1))
    {
    g_ctrldown = true;
    }
    else
    {
    g_ctrldown = false;
    }
    tmp = lParam;
    if(g_ctrldown)
    {
    if(wParam == 0x43 && (tmp>>30 & 1))
    {
    PostMessage(g_hwnd,UM_COPY,0,0);
    }
    }
    但是这样也不行啊~~~
      

  3.   

    Key Code == 'C'GetAsyncKeyState(...)可以判断Ctrl的状态,看MSDN
      

  4.   


    if(GetKeyState(VK_CONTROL)<0 && GetKeyState(_T('C'))<0)
    {
    AfxMessageBox(_T("Ctrl + C"));
    }
      

  5.   

    没用,没反应,我这是在DLL里的键盘钩子,不是在进程里