【问题标题】:How to enable or disable characters of the keyword in a c program如何在c程序中启用或禁用关键字的字符
【发布时间】:2019-11-07 11:29:31
【问题描述】:

我正在尝试在 c 程序中控制键盘。我使用Windows作为操作系统,程序将在控制台应用程序中制作。

我的问题是,有没有一种方法可以在 c 程序中仅在程序请求非数字值时启用数字锁定?

另一方面,如果程序只要求输入数字值,那么只需启用数字键盘。

我想知道这是否可行以及我应该遵循哪些步骤。

【问题讨论】:

标签: c input keyword


【解决方案1】:

我的问题是,有没有一种方法可以在 c 程序中仅在程序请求非数字值时启用数字锁定?

是的,这可以通过 Windows 上的 SetKeyboardStatekeybd_eventSendInput 函数实现。后者优于 keybd_event。这是一种模拟键盘输入的简单方法。

另一方面,如果程序只要求输入数字值,那么只需启用数字键盘。

这变得更加复杂。在用户模式下是可能的,但它很hacky。正确的方法是使用WDK 创建一个键盘过滤器驱动程序。但除非您对驱动程序 API 和内核模型有深入的了解,否则我也不推荐该路线。在用户模式下执行此操作的方法是使用SetWindowsHookEx 函数以WH_KEYBOARD 作为id 创建一个本地键盘过滤器。在LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) 回调中,您将检查所按下键的扫描码,如果它不是数字或您喜欢的任何条件,您只需返回CallNextHook,它会跳转到钩子链中的下一个过程,基本上忽略您的输入提供。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多