如何检测 C 语言中的一个或多个按键组合?
如何检测 ANSI C 和/或 Win32 SDK 中的一个或多个按键组合?
例如:如何检测 CTRL+ALT+DEL 被按下?
请向我提供一些源代码或任何网络链接。
请注意,我使用的是轮询机制,而不是事件。
我需要在 win32 控制台模式下执行此操作。
How can I detect one or combination of strokes of keys in ANSI C and/or with Win32 SDK?
For example: how can I detect CTRL+ALT+DEL was pressed?
Please provide me with some source code or any web-link.
Please note that, I am using polling mechanism, not event.
I need to do it in win32 console mode.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
对于 ANSI C,这是不可能的,因为 ANSI C 没有定义任何以这种方式访问键盘的方法。其中接受用户输入的最低级函数是
getc
,它在将字符输入到stdin
并按下 ENTER 后返回一个字符。至于Win32 API,确实可以这样做。在消息处理函数 (
WndProc
) 中,您应该监视WM_CHAR
消息。修饰符将帮助您查看是否按下了 CTRL 和 SHIFT。PS 只是一个想法,也许您正在寻找像 Autohotkey 这样的工具?
With ANSI C it is impossible, since ANSI C doesn't define any method to access the keyboard in this manner. The lowest-level function in it that takes input from the user is
getc
that returns a character after it has been entered intostdin
and ENTER has been pressed.As for the Win32 API, indeed this can be done. In the message handling function (
WndProc
)you should watch forWM_CHAR
messages. Modifiers will help you see if CTRL and SHIFT are pressed.P.S. just a thought, maybe what you're looking for is a tool like Autohotkey?