有没有方法可以实现这个功能?我正在使用 INPUT
类来模拟按键,当想要按下变量类型为 char
的按键时,我需要使用以下方法:
INPUT ip;
ip.type = INPUT_KEYBOARD;
//a bunch of code, and flags...
ip.ki.wVk = toupper(foo);
...其中foo是自定义的char
类型。
这很好用,直到用户输入一个不是普通字母的字符,结果会注册完全不同的键(这是可以理解的)。这就是为什么我想知道是否有可能通过变量的值获取十六进制键码的方法。
我知道可以使用大型switch(foo) case '1': //等等...
将不支持的字符替换为相应的键码,但实际上,这意味着很多不必要的代码。
那么,有没有办法?非常感谢您的回答,如果没有,我将以更复杂的方式解决它。然而,由于这个问题已经发生了几次,我觉得知道这个方法可能对参考有好处。
VkKeyScanEx(...)
方法。该方法的文档链接为:http://msdn.microsoft.com/zh-cn/library/windows/desktop/ms646332(v=vs.85).aspx - clstrfsckcout << VkKeyScanEx('c', (LoadKeyboardLayout(0x1053)))
。显然,该函数无法进行重载,这意味着我需要某种区域设置标识符作为第二个参数...我并不指望它能够正常工作,但是如果您需要知道,它是针对瑞典键盘设计的。 - MaxGetKeyboardLayout(0)
看起来可以加载程序窗口所在系统的当前键盘布局 :) - jave.web