none
PeekConsoleInput无法取得KEY_EVENT事件? RRS feed

  • 问题

  • 唔。我使用这个的原因是想弄一个快捷键,按下escape键可以返回主菜单。(控制台应用程序)

    因此,我开了两个线程,一个线程做程序操作,另一个线程检测键盘输入。

    我试过了ReadConsoleInput ,这个函数用以下代码工作的很好。。但是程序操作的线程输入时有些时候是无效的。。我认为两个线程在争夺键盘的输入。

    因此,我将该函数换为了PeekConsoleInput,意图解决这个问题,但我很惊讶的发现,这个函数在使用时,根本就没有捕获到KEY_EVENT事件。我下了断点,但一点用的没有。

    请诸位帮助。

    code:

      INPUT_RECORD keyRec;
    	DWORD state = 0, res=0;
    	HANDLE hIn = GetStdHandle(STD_INPUT_HANDLE);
      while(1)
      {
        PeekConsoleInput(hIn, &keyRec, 1, &res);
        if(keyRec.EventType==KEY_EVENT&&keyRec.Event.KeyEvent.bKeyDown)
    		{
            switch(keyRec.Event.KeyEvent.wVirtualKeyCode)
    				{
            case VK_ESCAPE:
              thrmanage();
              exit(0);
              break;
    
            }
        }
      }
    2010年6月16日 17:37

全部回复