我正在尝试在c程序中控制键盘。我使用Windows作为操作系统,该程序将在控制台应用程序中完成。
我的问题是,是否有这样的事情,例如仅当程序要求输入非数字值时才在c程序中启用数字锁定?
另一方面,如果程序仅要求输入数字值,则仅启用数字键盘。
我想知道这是否可行,我应该遵循什么步骤。
最佳答案
我的问题是,是否有这样的事情,例如仅当程序要求输入非数字值时才在c程序中启用数字锁定?
是的,这可以通过Windows上的SetKeyboardState,keybd_event或SendInput函数实现。后者优于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/