Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.06.17;
Скачать: CL | DM;

Вниз

Какие есть еще пути реализации глобальных хуков?   Найти похожие ветки 

 
IGOREK ©   (2002-04-10 18:21) [0]

Прочитал статью "Hooks - аспекты реализации", где используется механизм Memory Mapped Files для сохранения дескриптора глобального хука для вызова CallNextHookEx
Резюме: использован тот факт, что при загрузке DLL в адресное пространство любого процесса сохраняются константы и типы, описанные в DLL (в отличие от переменных). В общем предложенное решение несколько громоздко.

Кто может предложить какие-то другие пути для решения проблемы корректного вызова следующей процедуры-обработчика хука для глобальных хуков, реализованных в DLL?
Для разных ОС.


 
SerVS - S   (2002-04-10 19:58) [1]

А чем тебе этот не нравится ;)? Тебе ж выложили готовый, работающий (сам проверял на 98 и 2к) исходник, что ты еще хочешь?


 
IGOREK ©   (2002-04-10 20:47) [2]

Исходник конечно работает, но возможно ли как-то иначе (покороче и/или не через MMF)? Думаю мастера могли бы что-то предложить...
Интерес чисто теоретический.


 
Fellomena   (2002-04-11 12:10) [3]

2 IGOREK: конечно же возможно и не одним способом.
Можно с помощью сообщений, можно используя интерфейсы попробовать, можно через обычные файлы, clipboard (коряво), и т.д.


 
Alx2 ©   (2002-04-11 13:50) [4]

Но, кроме обычных файлов, все это Windows реализует через MMF :)


 
SerVS ©   (2002-04-11 17:47) [5]

Fellomena забыла еще про реестр написать ...
ЫЗ. Если будешь делать через онный, не забудь клас TRegistry использовать ;)


 
Fantasist   (2002-04-14 09:05) [6]

Конечно есть другой способ. Сегменты данных можно сделать разделяемыми, поддерживается в Windows такая вещь. В VC то делается элементарно:

#pragma data_seg("MYSECT")
int SomeHandle = 0;
#pragma data_seg()
#pragma comment(linker, "/section:MYSECT,rws") //read,write, shared

Дальше за вас все делают компилятор и линкер. Если в дельфях это не поддерживается в явном виде, то можно попробывать это сделать через асм. Хотя через него можно создать сегмент данных, его свойство надо прописать непосредственно в загаловке собранного файла. А это надо знать его формат. :(


 
SerVS ©   (2002-04-14 23:18) [7]

>Fantasist
Не работал с этими сегментами, но уверен что сделаны они через MMF, наверное просто разные названия одного итогоже.


 
Fantasist   (2002-04-15 06:01) [8]

Как это реализованно в системе точно сказать не могу(пока) - однако это явно не название того же. Сегмент данных, будь он разделяемым или нет - это сегмент данных и он находиться в исполняемом файле или dll наряду с сегментами кода, а MMF - это механизм сами знаете чего. И как уже было отмеченно, работать с ним через API громозко и не удобно.


 
Fellomena   (2002-04-16 10:45) [9]

До кучи: CreateNamedPipe - но это только для NT.
Что забавно - в Win9x работать с именоваными пайпами можно, но создавать - нет =)
А анонимные возвращают ескрипторы для записи и для чтения, но что бы эти дескрипторы стали известны другому приложению - надо опять же их в это другое приложение как-то передавать ;)



Страницы: 1 вся ветка

Текущий архив: 2002.06.17;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.015 c
3-55023
int64
2002-05-24 07:48
2002.06.17
UDF в качестве перегружаемой функции.


14-55285
TPavel
2002-05-14 07:48
2002.06.17
быстрое преобразование Фурье


1-55150
Валет
2002-06-04 13:05
2002.06.17
---|Ветка была без названия|---


1-55209
Федина Лидия
2002-06-04 17:52
2002.06.17
формирование справки - Help


14-55265
Сатир
2002-05-10 17:59
2002.06.17
Потоки