Обнаружение ввода с клавиатуры после распознавания клавиши в Windows

Я строю программу, которая будет печатать значения нажатых кнопок на экране. Мне нужно, чтобы это работало также, когда окно программы не активно. Я попытался использовать GetAsyncKeyState (int), который работает нормально. Тем не менее, я могу прикрепить определенные строки к клавишам, но это не работает для всех типов клавиатур (например, на английских клавиатурах shift + 2 — это @, а на моей — нет). Как я могу обнаружить постобработку ввода с клавиатуры, выполняемую Windows (символ, который печатается на экране при записи в блокноте)?

0

Решение

Попробуйте функцию OemKeyScan. С твоим ты должен иметь сканкод (например, клавиша «2» имеет заданный код сканирования, который всегда одинаков в зависимости от положения на клавиатуре, например, 17 для клавиши «2»):

    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);
}
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]