Форум: "WinAPI";
Текущий архив: 2002.06.17;
Скачать: [xml.tar.bz2];
ВнизКакие есть еще пути реализации глобальных хуков? Найти похожие ветки
← →
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 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.06.17;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.006 c