|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
15.04.2016, 17:25 | #1 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,648
|
Клавиатурный хук
Казалось бы, такая простая задача и в поиске тысячи примеров реализации. Но ни один, что я находил, нормально не работает.
Первый способ. Код:
Второй способ. Код:
Есть ли у кого пример полностью рабочего хука без подобных косяков? E-Mail: arigato.freelance@gmail.com
|
15.04.2016, 17:42 | #2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,342
|
|
15.04.2016, 18:07 | #3 | |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,648
|
Сначала подумал, что за индусский код такой:
Код:
А хук не работает как надо, русские буквы превращаются биллеберду, а английские дублируются раз по 5. Вот вывод: Цитата:
E-Mail: arigato.freelance@gmail.com
|
|
15.04.2016, 19:49 | #4 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,342
|
Надо отслеживать нажатие клавиши или нет, если символ сконвертирован, то не надо передавать в систему. А если НЕ сконвертирован, то обязательно передавать дальше - система должна следить например за состоянием SHIFT.
А зачем это надо - не проще будет свою раскладку сделать? |
15.04.2016, 20:18 | #5 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,648
|
От повторов удалось избавиться, работает отлично с ASCII-кодами, воспринимает регистр букв, значки. Но вместо русских все еще белиберда:
Код:
Ввод "dfgПривет!" теперь приводит к "dfg@825B!". P.S. Вариант с WM_CHAR никуда не годится. Если набирать текст в Word, он отлавливается (с проблемой с русскими буквами), а в Блокноте - нет. Вернулись к началу, пока ни одного нормального варианта хука нет, который бы работал везде вне зависимости от активного приложения, от раскладки клавиатуры, от регистра символов... E-Mail: arigato.freelance@gmail.com
Последний раз редактировалось Arigato; 15.04.2016 в 20:37. |
15.04.2016, 21:08 | #6 |
Просветитель
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,834
|
Пить/курить то же, что и автор кода.
В разработке: воспроизводственный контур ИТ
|
15.04.2016, 22:08 | #7 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,342
|
Можно попробовать посылать WM_UNICHAR.
Сделайте свою раскладку и проблем не будет... |
15.04.2016, 23:04 | #8 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,648
|
Не совсем понимаю, зачем посылать и что значит свою раскладку? Мне не посылать надо, а перехватывать.
E-Mail: arigato.freelance@gmail.com
|
16.04.2016, 00:50 | #9 |
Просветитель
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,834
|
Мне кажется, что это случай для MapVirtualCodeEx.
В разработке: воспроизводственный контур ИТ
|
16.04.2016, 00:50 | #10 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,342
|
А, понятно...
А что содержит wParam когда перехватывается notepad и когда word? Тут похоже, что в одном случае Юникод а в другом нет. Проверяйте получателя WM_CHAR с помощью IsWindowUnicode() |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Клавиатурный хук, вывод клавиши два раза. | Winexcel | Общие вопросы Delphi | 3 | 14.07.2014 07:18 |
Клавиатурный тренажер на с++ | S@M@N | Помощь студентам | 1 | 28.01.2013 20:21 |
Клавиатурный шпион | okda | Общие вопросы C/C++ | 0 | 12.02.2012 13:39 |
Клавиатурный обработчик. | Shub_Niggurath | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 1 | 16.06.2010 22:47 |
Клавиатурный хук. Гляньте код.... | Levmetall | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 1 | 26.02.2010 18:44 |