有没有办法在Windows控制台中获取按键事件?我需要一种能够快速获取按下和释放按键事件的方法,而不需要使用GUI。我已经尝试过使用getch()函数,但它无法获取释放按键事件,并且会等待直到按键被按下才返回。
有没有办法在Windows控制台中获取按键事件?我需要一种能够快速获取按下和释放按键事件的方法,而不需要使用GUI。我已经尝试过使用getch()函数,但它无法获取释放按键事件,并且会等待直到按键被按下才返回。
使用ReadConsoleInput()
API。注意事件类型为KEY_EVENT
的事件。这不适用于所有按键事件(如Ctrl键、Shift键、暂停键等无法读取),但大多数按键可以读取。
使用GetNumberOfConsoleInputEvents
来避免阻塞。
GetKeyState
或GetAsyncKeyState
,但这不会触发键按下/键弹起事件。它只会告诉您当前按下了哪些键。WH_CALLWNDPROC
钩子以侦听发送到控制台窗口的消息。WH_MSGFILTER
钩子。我不知道这是否适用于控制台窗口,但如果适用,则会生成较少的要忽略的消息。有很多种方法。GetKeyboardState 是其中最明显的之一。