Форум: "WinAPI";
Текущий архив: 2002.04.08;
Скачать: [xml.tar.bz2];
ВнизHook s id Dll s - пожалуйсто объясните. Найти похожие ветки
← →
Бильврёст (2002-01-29 14:19) [0]Здравствуйте, мастера. Возникла проблема, решение которой мною найденно небыло ни в одном из доступных мне источников.
Дело в установке нескольких hook-ов из dll.
Имеем след. ситуацию:
Моя прога грузит в своё АП DLL которая устанавливает глобальный hook: при этом сам hook это:
- объект Windows, располагающийся где ?
- если мой процесс окончит работу, hook будет снят ?
Когда мой hook срабатывает:
- моя dll польностью отображается на АП процесса (или потока) в котором произошло отследуемое событие ?
- callback ф-ия, указатель на которую передаётся при вызове SetWindowsHookEx() выполняется в контексте моего процесса или процесса в котором произошло событие, отслеживаемое моим hook-ом ?
При установке новой ловушки она ставится в конец цепочки уже существующих:
- цепочка ловушек в системе только одна или несколько, взависимости от типа hook-а ?
- когда я передаю сообщение дальше по цепочке CallNextHookEx() первым параметром я передаю дескриптор следующего hook-а ??? А как я его узнаю если не я его устанавливал, а к примеру другое приложение ?
Всем большое спасибо за ответы !
← →
Бильврёст (2002-01-29 14:29) [1]Господа, прошу прощение за назойливость - но у меня очень ограниченно время в INet-е, а ответ на мой вопросс - очень мне необходим.
← →
Raptor (2002-01-29 22:25) [2]при этом сам hook это:
- объект Windows, располагающийся где ?
В АП всех процессов, которые вызвали функцию обработки хука. Когда ставишь, например, хук на клавиатуру ДЛЛ подгружается в АП твоего процесса. Когда ты переключаешься на другое приложение и нажимаешь кнопку на клаве, ДЛЛ сразу же подгруж в АП этого процесса и будет оставаться там пока не будет снят хук.
- если мой процесс окончит работу, hook будет снят ?
Непременно. Причем даже если закончит работу не сам процесс, а та нить, которая поставила хук.
Когда мой hook срабатывает:
- моя dll польностью отображается на АП процесса (или потока) в котором произошло отследуемое событие ?
Да.
- callback ф-ия, указатель на которую передаётся при вызове SetWindowsHookEx() выполняется в контексте моего процесса или процесса в котором произошло событие, отслеживаемое моим hook-ом ?
В контексте того процесса в котором произошло событие, отслеживаемое hook-ом.
При установке новой ловушки она ставится в конец цепочки уже существующих:
- цепочка ловушек в системе только одна или несколько взависимости от типа hook-а ?
Для каждого типа хука отдельная цепочка.
- когда я передаю сообщение дальше по цепочке CallNextHookEx() первым параметром я передаю дескриптор следующего hook-а ??? А как я его узнаю если не я его устанавливал, а к примеру другое приложение ?
CallNextHookEx вызывается в callback-функции обработки хука для того что бы передать сообщение далее по цепочке хуков. Когда ты ставишь хук, ты вызываешь функцию SetWindowsHookEx, результатом которой и будет дискриптор, который ты подставляешь первым параметром в функцию CallNextHookEx. Об этом вроде очень даже прозрачно написано в хелпе.
← →
Бильврёст (2002-02-05 13:38) [3]Great !!!
>> Raptor:
Громадный thanks, а то я уж отчаялся где либо найти ответы на всё это.
Если не сложно - не могли бы порекомендовать источники в Internete или авторов книг (можно англоязычные) где можно почитать о DLL. Меня интересует не сам механизм написания, а тонкости, ньюансы и теории вообще.
(Тейксейру не предлагать - там ничего нового для меня нет - смотрел уже :)
Буду признателен.
← →
Raptor (2002-02-05 23:30) [4]Ничего конкретного предложить не могу, так как зачастую не запоминаю и не записываю где я наткнулся на ту или иную статью. Я просто беру какой нибудь поисковик и ищу по нужной мне теме.
А вообще, я никаких особых тонкостей и нюансов в написании ДЛЛ не вижу. Там все довольно прозрачно.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.04.08;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.005 c