0

我正在构建一个程序,可以在屏幕上打印出按下按钮的值。当程序的窗口不活动时,我也需要它工作。我尝试使用 GetAsyncKeyState(int),效果很好。但是,我可以将某些字符串附加到键上,但它不适用于所有类型的键盘(例如,在英文键盘上 shift+2 是 @,而在我的键盘上则不是)。如何检测 Windows 完成的键输入的后处理(在记事本中书写时打印在屏幕上的字符)?

4

1 回答 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 回答