| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > вытащить из кода клавиши символ |
| Автор: Dmi3ev 19.3.2008, 23:25 |
| проблема такая! я знаю код символа (десятичный), как узнать, что это за символ с учетом языка! т.е. есть код 65, например! надо узнать какой это символ а русская или а английская? есть ли функция, которая анализирует код с учетом языка! если нет, то подскажите, как узнать текущий язык, напишу свою функцию, которая это делает заранее спасибо. |
| Автор: v2v 19.3.2008, 23:26 |
| char a = (char)65;) |
| Автор: Dmi3ev 19.3.2008, 23:51 | ||||
не так немного выразился
код клавиши Добавлено через 2 минуты и 40 секунд и здесь не так
ф русская или а английйская? извините за неточности, я недавно начал |
| Автор: v2v 20.3.2008, 00:16 |
| http://www.physik.fu-berlin.de/~goerz/misc/ascii.gif http://www.realcoding.net/article/view/1857 |
| Автор: korian 20.3.2008, 02:32 |
| если в винде и про скан-код то - MapVirtualKey |
| Автор: Dmi3ev 20.3.2008, 12:29 | ||||
| объясню все подробно! я написал программу, которая записывает в файл все, что печатается с клавиатуры (вне программы). все отлично работает, только одна проблема! если человек печатает на русском, то код клавиши от этого не меняется, и когда я пишу (char)p->vkCode, то в файл записывается английская буква, соответствующая данному коду клавиши, т.е. язык никак не влияет на код клавиши. я и решил узнать, может есть функция, которая учитывая язык, и зная код нажатой клавиши будет записывать, то что человек реально печатает. конечно несложно, зная язык и код клавиши, самому написать функцию! но перед этим я решил поинтересоваться, может не стоит изобретать велосипед Добавлено через 1 минуту и 35 секунд
спасибо, но эти данные у меня есть Добавлено через 4 минуты и 13 секунд korian,
это не тот ответ, который нужен новичку вроде меня, хотя бы чуть-чуть поподробнее, если нетрудно |
| Автор: korian 20.3.2008, 12:35 |
| велосипед существует, я уже написал, называеться он MapVirtualKey (WinAPI-функция такая) |
| Автор: Dmi3ev 20.3.2008, 12:50 |
| korian, как пользоваться MapVirtualKey, можно маленький примерчик, допустим код клавиши 65, т.е. "ф" или "a". помоги |
| Автор: G0L1a7h 20.3.2008, 17:41 |
| _http://msdn2.microsoft.com/en-us/library/ms646306(VS.85).aspx Пользуйся гуглом. |
| Автор: Dmi3ev 20.3.2008, 18:30 |
| G0L1a7h, спасибо! конечно лучше бы примерчик маленький присылать вместе с сообщением |
| Автор: Dmi3ev 21.3.2008, 09:33 | ||
что-то у меня не получается! данную программу пишу в билдере, соответсвенно код такой
ошибку не выдает, но и значение тоже возвращает не то (возвращает p->vkCode). поясните пожалуйста, может я неправильно понял, как пользоваться этой функцией? |
| Автор: korian 21.3.2008, 10:55 | ||
| ндя, оказалось не все так просто... MapVirtualKey для такой цели не очень годится... вот что у меня получилось:
вместо ToUnicode можно использовать ToAscii, если надо. там правда немного по другому. |
| Автор: Dmi3ev 21.3.2008, 22:22 |
| korian, давай без Memo и без остальных приблудов, я правда хочу разобраться, а не получить готовый код! у нас есть код клавиши 65 и раскладка русская, значит пользователь нажал Ф! как добиться того, чтобы это узнать? помоги разобраться, пожалуйста |
| Автор: korian 22.3.2008, 05:06 | ||
| я дал пример использования основная функция для перевода virtkey + scan code в char - ToUnicode ей передаются VirtualKey, Scan code, состояние клавы а возвращает она символы и их количество но использовать вам скорее всего надо ToUnicodeEx, т.к. надо будет узнавать раскладку активного потока.
описание функций есть в MSDN |
| Автор: Dmi3ev 22.3.2008, 17:23 |
| разобрался, спасибо большое!!!!!!! |