Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.06.2012, 22:04   #1
agronomchek
Пользователь
 
Регистрация: 24.08.2010
Сообщений: 19
По умолчанию GetKeyboardLayout() всегда возвращает ангийскую раскладку

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

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

Код:
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;
}
Подскажите, пожалуйста, что я делаю не так?
agronomchek вне форума Ответить с цитированием
Старый 17.06.2012, 22:12   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А GetWindowThreadProcessId точно отрабатывает?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.06.2012, 22:24   #3
agronomchek
Пользователь
 
Регистрация: 24.08.2010
Сообщений: 19
По умолчанию

Он отрабатывает, но видимо неверно. Может какой-то процесс по умолчанию выдает. Чесно, не знаю как проверить правильность возвращаемого хэндла, ибо с WinAPI особо не работал..
agronomchek вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Менять раскладку клавиатуры програмно Dark_Wolf Общие вопросы Delphi 0 07.11.2011 00:52
Добавить/убрать раскладку Stilet Win Api 5 20.07.2011 11:35
Переключить раскладку клавиатуры. SKYLINEGTR Помощь студентам 2 02.02.2011 00:50
[winsock] WSAWaitForMultipleEvents всегда возвращает WSA_WAIT_TIMEOUT accipiter Win Api 0 22.10.2010 22:41
Всегда позади и всегда впереди в одном приложении Legat Win Api 4 27.10.2007 15:48