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

  • Автор темы agronomchek
  • Дата начала
A

agronomchek

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

Есть служба, внутри которой постоянно должна проходить проверка текущей раскладки и, с учетом её, расишифровывать сканкод в символ 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;
}