Главная страница
    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-22737
snoup
2002-03-26 13:45
2002.04.08
Как сделать например мне нужно что бы я пороботал в программе изменил там что то


3-22517
Programmer1
2002-03-12 11:55
2002.04.08
Доступ к базе данных по сети


14-22838
lel
2002-02-28 15:37
2002.04.08
Переписочка 8)) Или чего он от меня хочет???


1-22739
Yaro
2002-03-26 06:52
2002.04.08
Что такое GetTickCount и с чем его едят?


14-22800
dimich
2002-02-14 14:24
2002.04.08
Что такое комп для программиста!!!





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский