Получение Клавиатурной Раскладки Активного Окна

Тема в разделе "Другие", создана пользователем agronomchek, 17 июн 2012.

Наш партнер Genesis Hackspace
  1. agronomchek

    agronomchek Гость

    Доброго времени суток, товарищи!

    Есть служба, внутри которой постоянно должна проходить проверка текущей раскладки и, с учетом её, расишифровывать сканкод в символ ASCII, но GetKeyboardLayout() всегда возвращает значение 00x0409, что есть раскадка US. Но 00x0419 (Русский), не возвращается. Ниже привожу кусок кода.

    Код (C++):
    char GetSymbolFromScancode(UINT scanCode) // переводит код нажатой клавиши в текст
    {
    BYTE btKeyState[256];
    HKL hklLayout = GetKeyboardLayout(GetWindowThreadProcessId(GetForegroundWindow(), NULL)); // узнаем язык клавиатуры
    unsigned short Symbol[2];
    GetKeyboardState(btKeyState);
    if((ToAsciiEx(MapVirtualKey(scanCode, 3), MapVirtualKey(scanCode, 2), btKeyState, Symbol, 0, hklLayout) == 1)
    {
    return Symbol[0];
    }
    return -1;
    }
     
Загрузка...

Поделиться этой страницей