|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
14.04.2009, 18:28 | #1 |
Регистрация: 14.04.2009
Сообщений: 8
|
Глобальный хук на клаву
Устанавливаю хук, который отправляет код символа моей программе. Все работает и работает везде.
Код стандартный взял с форума: Код:
Последний раз редактировалось rpy3uH; 14.04.2009 в 18:59. |
14.04.2009, 19:06 | #2 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
код надо оформлять в тегах CODE
по теме: в функции KeyHook при получении символа, который надо заблокировать, не вызывай функцию CallNextHookEx и возвращай значение отличное от нуля. Код:
|
14.04.2009, 19:21 | #3 |
Новичок
Джуниор
Регистрация: 13.04.2009
Сообщений: 2
|
Можна поставити hook WH_GETMESSAGE і змінювати код клавіші на 0 (у структурі TMsg) при WM_KEYUP чи WM_KEYDOWN. Правда працює лише для віконних програм.
|
14.04.2009, 21:22 | #4 |
Регистрация: 14.04.2009
Сообщений: 8
|
К сожалению не всё так просто. Не вызывать CallNextHookEx нельзя - видимо это нарушает работу хуков некоторых программ. Например в notepad работает, в Microsoft office нет.
WH_GETMESSAGE тоже пробовал - если обнулять структуру TMsg, символ действительно не доходит, но появляеться другая проблема - каждый символ передаёться моей программе несколько раз, например в Microsoft Office 5 paз, в notepad всё ok. Как с этим бороться - непонятно. Вопрос остаёться открытым... |
15.04.2009, 08:16 | #5 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
ну попробуй так
Код:
|
15.04.2009, 18:36 | #6 |
Регистрация: 14.04.2009
Сообщений: 8
|
Не помогает. Виноват именно result:=1. Если result:=0 работает, но символ доходит. Отладка показала, что если result:=1, не срабатывает условие if CODE = HC_ACTION then.
|
16.04.2009, 12:29 | #7 |
Регистрация: 14.04.2009
Сообщений: 8
|
Похоже тупик...
Моя задача такая: 1. надо перехватить нобор текста в любом окне 2. передать каждый символ моей программе 3. там я меняю символы как мне надо 4. то, что получилось, передаю назад в то же самое окно 5. и последняя задача, которую я считал простой, чтобы некоторые символы не доходили бы до программы в которой набираеться текст. Первые 4 реализованны и работают нормально, последняя никак... Видимо придёться искать другой путь... Но как такое сделать? P.S. Простите за возможные ошибки - русский не родной мне язык. |
03.05.2009, 01:25 | #8 |
Регистрация: 14.04.2009
Сообщений: 8
|
Ещё вопрос появился...
Передаю символы в чужое окно. Нужно стереть символ который стоит перед курсором. Думал будет работать так: Код:
Тогда попытался так: Код:
Что я делаю не так? Этот код находиться в процедуре которая обрабатывает хук на клаву. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Глобальный хук. Проблема с dll =\\ | Zeraim | Win Api | 11 | 19.12.2008 00:18 |
Ловушка на клаву(нужно немного улутшить ее) | xshStasX | Win Api | 2 | 11.08.2008 15:50 |
Глобальный хук на мышь не глобальный О_о | JTG | Общие вопросы Delphi | 3 | 05.06.2008 17:41 |
глобальный поиск по винтам | Simply-Art | Общие вопросы Delphi | 5 | 27.11.2006 17:02 |
глобальный хук & событие отжатия клавиши | Nowichok | Общие вопросы Delphi | 9 | 24.11.2006 17:51 |