Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.009 c
14-55282
Из Санкт-Петербурга
2002-05-15 08:20
2002.06.17
Кто знает, сколько у нас в городе стоит Nokia 3410, и где купить?


8-55234
dmitriyk
2002-01-31 03:22
2002.06.17
Как качественно перевести цветную картинку в черно-белую


4-55345
s.ts
2002-04-12 19:03
2002.06.17
Управление DOS-окном из Win98,Win2k


1-55087
skiph
2002-06-03 06:40
2002.06.17
TWordApplication


14-55278
[NIKEL]
2002-05-12 01:08
2002.06.17
А кто какие примеры функции хочет видеть в UBPFD???




   Наверх