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

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

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;
}
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab