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

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

  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;
    }
     
Загрузка...

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