ToAsciiEx/ToUnicodeEx принимают массив, показывающий текущее состояние клавиатуры, в том числе таких клавиш, как Shift и Caps Lock, непосредственно влияющих на регистр символов. А одного виртуального или скан кода недостаточно, чтобы сформировать правильный регистр.
Здравствуйте, Alex Fedotov, Вы писали:
AF>ToAsciiEx/ToUnicodeEx принимают массив, показывающий текущее состояние клавиатуры, в том числе таких клавиш, как Shift и Caps Lock, непосредственно влияющих на регистр символов. А одного виртуального или скан кода недостаточно, чтобы сформировать правильный регистр.
Я в понедельник откопал ToAsciiEx в рсдн'е. Написал вот такую фильтрующую функцию:
но символы с введённым регистром возвращаются через раз, точнее один раз, а потом регистр символов не меняется вне зависимости нажатия Caps Lock или Shift.
Где тут грабли?
Здравствуйте, Stanky, Вы писали:
>> Почему практически всегда не различается регистр набранного символа??? >> S>Может потому, что не надо так извращаться, а надо использовать WM_CHAR?
Мсье, понимает толк в извращениях? Может тогда укажешь мне, а то я сам невинность .
Нужен логгер, ввод текста пользователем в любом окне пишется в лог файл (текст в логе должен быть такого же регистра и языка, что и набранный пользователем). Для этого и была попытка использовать глобальный хук на тётю Клаву. Другого способа не вижу. Были попытки использавать сообщение WM_CHAR, но они ничего не дали (конечно возможно неправильно делал).
> Для этого и была попытка использовать глобальный хук на тётю Клаву. >
Ааааа, дык вот откуда корни растут!!!
Тогда я пас — во всяком случае сейчас голова о другом болит!!!
Posted via RSDN NNTP Server 1.9
Не бойся выглядеть глупо, от этого ты выглядишь ещё глупей!!!
Re[4]: MapVirtualKeyEx
От:
Аноним
Дата:
05.03.07 04:11
Оценка:
Здравствуйте, SubZero2000, Вы писали:
SZ>Hi All !!!
SZ>Может всё-таки кто-то сталкивался с подобной проблемой... Почему практически всегда не различается регистр набранного символа???
(код поскипан)
Да простят меня за подъём старого топика, но сейчас передо мной стоит аналогичная задача — лог клавиатуры. Делаю через хук WH_KEYBOARD_LL, в нём использую ToUnicodeEx. Всё бы хорошо, но есть проблема, один в один как у топикстартера: в упор не хочет различать регистр, такое ощущение что нажатую клавишу Shift просто игнорируют. При активной русской раскладке вместо смайлика например получаем в логе 60. Подскажите куда копать ? Очень не хотелось бы извращаться и заменять результат в зависимости от состояния клавиши Shift ручками.
Re[5]: MapVirtualKeyEx
От:
Аноним
Дата:
05.03.07 19:56
Оценка:
Здравствуйте, Аноним, Вы писали:
SZ>>Может всё-таки кто-то сталкивался с подобной проблемой... Почему практически всегда не различается регистр набранного символа???
Всё, разобрался AttachThreadInput необходимо делать перед получением состояния клавиатуры.