Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
3-54971
Browko Dmitrey
2002-05-22 17:36
2002.06.17
Как через Query сделать Insert по полю с зарезервированым именем


14-55284
Neon_space
2002-05-14 20:28
2002.06.17
Конвертирование проектов Delphi в проекты C++ Builder


4-55368
DeadMoroze
2002-04-15 00:52
2002.06.17
Active desktop


1-55204
Ник
2002-06-05 11:40
2002.06.17
TColor


3-55049
AlekseyK
2002-05-24 12:06
2002.06.17
Подскажите в чем ошибка





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