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

我的问题是,是否有这样的事情,例如仅当程序要求输入非数字值时才在c程序中启用数字锁定?

另一方面,如果程序仅要求输入数字值,则仅启用数字键盘。

我想知道这是否可行,我应该遵循什么步骤。

最佳答案

我的问题是,是否有这样的事情,例如仅当程序要求输入非数字值时才在c程序中启用数字锁定?


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


  另一方面,如果程序仅要求输入数字值,则仅启用数字键盘。


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

关于c - 如何在C程序中启用或禁用关键字的字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58747836/

10-17 03:11