我正在构建一个程序,可以在屏幕上打印出按下按钮的值。当程序的窗口不活动时,我也需要它工作。我尝试使用 GetAsyncKeyState(int),效果很好。但是,我可以将某些字符串附加到键上,但它不适用于所有类型的键盘(例如,在英文键盘上 shift+2 是 @,而在我的键盘上则不是)。如何检测 Windows 完成的键输入的后处理(在记事本中书写时打印在屏幕上的字符)?
问问题
861 次
1 回答
0
试试 OemKeyScan 功能。使用您的,您应该拥有扫描码(例如,“2”键具有给定的扫描码,根据键盘上的位置始终相同,例如“2”键为 17):
int whichscancode= 17;
if (key_with_shift)
whichscancode|= (1<<16); // shifted values with 1<<16
for (i=0; i<256; i++) {
int scan= ::OemKeyScan(i); // try all characters for a matching scancode
if (scan==whichscancode) {
// i here is the ascii code of the key on that position
printf("on that scancode is character %c\n", (char)i);
}
}
于 2013-06-11T16:47:45.120 回答