Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
1-22743
Stupid
2002-03-27 09:25
2002.04.08
Помогите срочно!!


3-22583
dymka
2002-03-17 10:47
2002.04.08
Репликация метаданных


1-22749
DikobraZ
2002-03-26 15:40
2002.04.08
Убрать показ ошибок!


1-22654
solo
2002-03-28 11:32
2002.04.08
Вся работа стоит.


3-22516
_Kirill_
2002-03-11 13:05
2002.04.08
Делаю выборку через Select.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский