none
屏蔽键盘的问题 RRS feed

  • 问题

  • 大家好,今天我编了一个程序,源代码关键部分如下,我是初学中,有几个不解,想问一下,希望好心人答复一下:

    while(1)

    {BlockInput(TRUE);

    SendMessage(hwnd,WM_KEYDOWN,VK_NUMPAD3,NULL);

    SendMessage(hwnd,WM_KEYUP,VK_NUMPAD3,NULL);

    SendMessage(hwnd,WM_KEYDOWN,VK_RETURN,NULL);

    SendMessage(hwnd,WM_KEYUP,VK_RETURN,NULL);

    BlockInput(FALSE);

    Sleep(5000);

    }

    本来我想在发送消息时,屏蔽键盘的其他操作,以免影响发送的消息,但还是有影响,不知道为什么,比如,我发送消息时,按下alt,但那个接受消息的窗口,如果同时按下了alt+enter键,会全屏,本来希望在发送消息时,把键盘锁住了,但发送消息的过程中,接受消息的那个窗口按alt,还是全屏了,是什么原因呢?有什么解决方法没?谢谢好心人了。

    2010年5月13日 6:48

答案

全部回复

  • 大家好,今天我编了一个程序,源代码关键部分如下,我是初学中,有几个不解,想问一下,希望好心人答复一下:

    while(1)

    {BlockInput(TRUE);

    SendMessage(hwnd,WM_KEYDOWN,VK_NUMPAD3,NULL);

    SendMessage(hwnd,WM_KEYUP,VK_NUMPAD3,NULL);

    SendMessage(hwnd,WM_KEYDOWN,VK_RETURN,NULL);

    SendMessage(hwnd,WM_KEYUP,VK_RETURN,NULL);

    BlockInput(FALSE);

    Sleep(5000);

    }

    本来我想在发送消息时,屏蔽键盘的其他操作,以免影响发送的消息,但还是有影响,不知道为什么,比如,我发送消息时,按下alt,但那个接受消息的窗口,如果同时按下了alt+enter键,会全屏,本来希望在发送消息时,把键盘锁住了,但发送消息的过程中,接受消息的那个窗口按alt,还是全屏了,是什么原因呢?有什么解决方法没?谢谢好心人了。

    2010年5月13日 6:47
  • 不是很理解你说的问题...
    2010年5月13日 7:31
  • 这需要用Hook截获WM_SYSKEYDOWN,你可以搜索一下相关文章

     


    0xBAADF00D
    2010年5月13日 13:25
    版主
  • Hi ilovegyc,

    如果您用的是MFC,可以参考下面的代码:

    BOOL CMyDialog::PreTranslateMessage(MSG* pMsg)   
    {  
     if(pMsg->message==WM_SYSKEYDOWN)  
     return true;  
      
     return CMyDialog::PreTranslateMessage(pMsg);  
    }

    如果您用的是Win32,您可以调用SetWindowsHookEx方法:
    http://msdn.microsoft.com/en-us/library/ms644990(VS.85).aspx

    Aland Li


    Please mark the replies as answers if they help and unmark if they don't. This can be beneficial to other community members reading the thread.
    2010年5月18日 13:44
    版主