Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Получить символ


Автор: Coocky 12.2.2009, 13:50
Привет! Что-то бьюсь,бьюсь-никак не получается.. Мне нужно получить символ клавиши для текущей раскладки.
Уже перепробывал кучу методов-ничего не работает. :(
Вот последний вариант
Код

//Получаю активное окно и его расладку.

                DWORD tmpdw;
        GUITHREADINFO lpgui={0};
        HWND tmphwnd=::GetForegroundWindow();
        DWORD dwTargetPID;
        tmpdw=GetWindowThreadProcessId(tmphwnd,&dwTargetPID);
        lpgui.cbSize=sizeof(GUITHREADINFO);
        GetGUIThreadInfo(tmpdw,&lpgui); 
        tmphwnd=lpgui.hwndFocus;
        HKL h_param=GetKeyboardLayout(tmpdw);
        

        BYTE *keyState=new BYTE[256];
        BOOL T=GetKeyboardState(keyState);
            SHORT sVal = VkKeyScanEx(';', h_param);// Получаю виртуальный код для такой-то клавиши (к примеру) 
        BYTE vk = LOBYTE(sVal);


        UINT nScanCode = MapVirtualKeyEx(vk, 0, h_param); //Получаю ее скэн-код

        int nChars = ToUnicodeEx(vk, nScanCode, keyState, awch,sizeof(awch)/sizeof(awch[0]), 0, h_param); //Тут всегда бред
        

Блин,в анлийской и русской клавиатуре все ок,например при нажатии ";" , я получаю ";" В датской  должен быть "æ", а у меня выходит ","
Ну что же делать? Подскажите! Хэээээээээээээээлп! Реально запарился. Искал по инету-особо не нашел..Только не отвеченные вопросы smile
Как-то ж стандартная виндовая ВИРТУАЛЬНАЯ клавиатура все ж распознает?И нормально отображает...

Автор: Coocky 13.2.2009, 13:23
Вопрос решен.Спасибо за помощь! smile 

Автор: YanTsys 16.2.2009, 17:50
Цитата

Искал по инету-особо не нашел..Только не отвеченные вопросы 


Теперь одним больше...  smile 

Автор: ASMatic 5.9.2009, 17:57
мог бы уже и написать в чём был недоучёт,а то как говорил YanTsys - теперь одним больше. Вот так и рождаются безконечные поиски по инету и в конечном итоге приводят к созданию новой темы на форуме. smile 
 smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)