|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
22.02.2012, 17:18 | #1 |
Участник клуба
Регистрация: 14.06.2011
Сообщений: 1,138
|
Загрузка Dll и доступ CallNextHookEx к памяти
Я хочу сделать что-то типа Т9 на компьютере, задействовав бесполезную цифровую клавиатуру. Но для этого необходима также и возможность переназначения клавиш, чтобы можно было и левой рукой набирать и не только лишь на цифровой клавиатуре. Да и клавы разные и скан коды у них тоже разные (хотя в целом стандартизированы).
Это код дээлэльки: Код:
1. Обработка нажатия клавиши и посылка сообщения в основную форму 2. Проверяется, что была нажата клавиши на NumPad и сохранение результата в переменной Look. 3. Выведение MessageBox с результатами этой проверка 4. Условие на результат проверки: 5. Выведение аналогичнейшего MessageBox с результатами проверки, но уже внутри if...then. 6. Передача в систему указания на обработку следующего hook'a. Так вот... Значения Look'a, до If...then и внутри него - разные. Что за фигня?? У меня такое чувство, что одна часть dll'ки грузится в пространство основной программы, а еще одна часть, в которой фунциклирует CallNextHookEx, грузится в память, подчиненную общей системе. И эти две части одной и той же dll между собой не соотносятся, или, по крайней мере, часть из общесистемной зоны памяти не может быть никак в процессе работы изменена. Она записывается один раз при инициализации и неизменна до конца. Перезапись невозможна. Но такие рассуждения мне самому кажутся шаманством и мракобесием. Но даже если это и так, и попытаться явно указать переменную Look как указатель (но переменные ж по идее и есть не что иное как указатели уже сами по себе), то указатели ведь наверняка могут указывать не на всю память, от 0 до 4гб, а лишь в пределах зоны памяти, выделенной системой для данного приложения. Вопрос: Каким же макаром запрещать/разрешать вызов следующего обработчика события клавиатуры, если проверка условия if..then не работает? Последний раз редактировалось Smogg; 22.02.2012 в 19:00. |
24.02.2012, 17:16 | #2 |
Форумчанин
Регистрация: 11.01.2012
Сообщений: 177
|
не знаю, помогут или нет мои коментарии, но всё равно отпишусь
1. DLL с обработчиком хука загружается в каждый процесс который хоть раз за свою жизнь принял клавиатурное сообщение 2. у каждого процесса своё собственное адресное пространство 0-4ГБ (верхняя половина которого недоступна) 3. в каждом процессе своя индивидуальная копия DLL 4. CallNextHookEx надо вызывать так Код:
progromore.i2p - первый русскоязычный портал программистов в скрытосети
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Доступ к переменной, объявленной в одной dll, из другой dll | eduard93 | Visual C++ | 2 | 25.09.2011 11:10 |
Определить SIZEMEM у DLL(Размер dll в памяти процесса) | Человек_Борща | Общие вопросы Delphi | 6 | 22.07.2011 20:54 |
Доступ к ячейкам памяти | Hemul | Общие вопросы C/C++ | 3 | 17.05.2011 22:16 |
Прямой доступ к памяти | Sibedir | Общие вопросы Delphi | 20 | 13.06.2010 17:19 |
[DLL] Загрузка и выгрузка dll в/из чужого процесса | Человек_Борща | Win Api | 4 | 28.02.2010 17:47 |