ToAsciiEx не работает, как ожидалось
Пишу hook для клавиатуры. Вот код callback-функции:
LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if (wParam == WM_KEYDOWN)
{
PKBDLLHOOKSTRUCT kb_event = (PKBDLLHOOKSTRUCT)lParam;
CHAR result;
BYTE kb_state[256];
GetKeyboardState(kb_state);
int c = ToAsciiEx(kb_event->vkCode, 0, kb_state, &result, 0, GetKeyboardLayout(GetCurrentThreadId()));
if (c)
printf("%c\n", result);
}
return 0;
}
Если я правильно всё понял, то ToAsciiEx должна переводить vk-code в соответствующий ему символ в зависимости от активной раскладки клавиатуры. Но при переключении раскладки во время работы программы ничего не меняется. Почему программа работает только с той раскладкой, с которой была запущена? Как это исправить?