C++ console keyboard events

前端 未结 5 1384
南笙
南笙 2020-11-30 14:57

Is there any way to get key events in a Windows console? I need a way to get keydown and keyup events quickly without a GUI. I\'ve tried using getch(), but it doesn\'t get k

5条回答
  •  孤街浪徒
    2020-11-30 15:29

    You can use GetKeyState or GetAsyncKeyState, but that won't give you keydown/keyup events. It will only tell you what keys are currently down.

    So if you really need to get the keydown/keyup events, you could install a hook. A Console window has a window handle that is owned by code in Windows and a message pump, also owned by code in Windows.

    You can get the window handle of of the console window by using GetConsoleWindowThen install a WH_CALLWNDPROC hook using SetWindowsHookEx to listen in on messages send to the console window.

    You might try a WH_MSGFILTER hook instead. I don't know if this works for console windows, but it would generate less messages to be ignored if it does work.

提交回复
热议问题