global hook in dll
От: comdevelop  
Дата: 25.03.09 15:33
Оценка:
Доброго времени суток!

Хочу создать dll и с ее помощью установить глобальную ловушку на клавиатуру. Но возникает два вопроса:
* как разделять данные между разными екзеплярами dll (которые приаттачены к разным процессам)? у Visual C++ есть директива #pragma data_seg, в Builder такого не нашел
* можно ли в разделяемыд данных создавать объекты (ссылочный тип)?

Спасибо!

26.03.09 12:37: Перенесено модератором из 'C/C++. Прикладные вопросы' — Кодт
Re: global hook in dll
От: superlexx  
Дата: 26.03.09 05:43
Оценка:
http://www.rsdn.ru/forum/message/3341292.flat.aspx
Автор: CyberDemon
Дата: 25.03.09
Re[2]: global hook in dll
От: Аноним  
Дата: 26.03.09 11:05
Оценка:
Здравствуйте, superlexx, Вы писали:

S>http://www.rsdn.ru/forum/message/3341292.flat.aspx
Автор: CyberDemon
Дата: 25.03.09


Там немного другая тема обсуждается (хук в 64-бит приложениях).
Re: global hook in dll
От: Аноним  
Дата: 26.03.09 11:15
Оценка:
C>Хочу создать dll и с ее помощью установить глобальную ловушку на клавиатуру. Но возникает два вопроса:
C>* как разделять данные между разными екзеплярами dll (которые приаттачены к разным процессам)? у Visual C++ есть директива #pragma data_seg, в Builder такого не нашел
C>* можно ли в разделяемыд данных создавать объекты (ссылочный тип)?


Пихать hook-specific разделяемые данные в шаред секцию длл изначально хреновая идея и от нее надо отказаться. Потому что в винде может быть во первых несколько десктопов, во вторых — несколько сессий. Хук — штука специфичная к десктопе (и понятное дело к сессии). Потому если например на систему зайдет одновременно 2 юзера — 2 разных хука будут поставлены в двух разных сессиях, а общая секция PE файла — у всех будет общая.

Потому лучше пихайте такие данные во view полученный от именованного файлмаппинга
Re[2]: global hook in dll
От: Аноним  
Дата: 26.03.09 11:29
Оценка:
Здравствуйте, Аноним, Вы писали:

C>>Хочу создать dll и с ее помощью установить глобальную ловушку на клавиатуру. Но возникает два вопроса:

C>>* как разделять данные между разными екзеплярами dll (которые приаттачены к разным процессам)? у Visual C++ есть директива #pragma data_seg, в Builder такого не нашел
C>>* можно ли в разделяемыд данных создавать объекты (ссылочный тип)?


А>Пихать hook-specific разделяемые данные в шаред секцию длл изначально хреновая идея и от нее надо отказаться. Потому что в винде может быть во первых несколько десктопов, во вторых — несколько сессий. Хук — штука специфичная к десктопе (и понятное дело к сессии). Потому если например на систему зайдет одновременно 2 юзера — 2 разных хука будут поставлены в двух разных сессиях, а общая секция PE файла — у всех будет общая.


А>Потому лучше пихайте такие данные во view полученный от именованного файлмаппинга


Спасибо за ответ! Ради интереса: как с этой проблемой справляется Visual C++ с директивой #pragma data_seg? И как можно через файл-маппинг разшаривать классы?
Re[3]: global hook in dll
От: Аноним  
Дата: 26.03.09 11:48
Оценка:
C>>>Хочу создать dll и с ее помощью установить глобальную ловушку на клавиатуру. Но возникает два вопроса:
C>>>* как разделять данные между разными екзеплярами dll (которые приаттачены к разным процессам)? у Visual C++ есть директива #pragma data_seg, в Builder такого не нашел
C>>>* можно ли в разделяемыд данных создавать объекты (ссылочный тип)?
А>>Пихать hook-specific разделяемые данные в шаред секцию длл изначально хреновая идея и от нее надо отказаться. Потому что в винде может быть во первых несколько десктопов, во вторых — несколько сессий. Хук — штука специфичная к десктопе (и понятное дело к сессии). Потому если например на систему зайдет одновременно 2 юзера — 2 разных хука будут поставлены в двух разных сессиях, а общая секция PE файла — у всех будет общая.
А>>Потому лучше пихайте такие данные во view полученный от именованного файлмаппинга
А>Спасибо за ответ! Ради интереса: как с этой проблемой справляется Visual C++ с директивой #pragma data_seg?
Никак. Ее не надо юзать )

А>И как можно через файл-маппинг разшаривать классы?

Через файлмаппинг мона расшаривать кусок памяти. Классы являются абстракцией уровня языка и потому с файлмаппингом они совершенно перпенидкулярны.
Re[3]: global hook in dll
От: superlexx  
Дата: 26.03.09 16:24
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Там немного другая тема обсуждается (хук в 64-бит приложениях).


не только: там также написано, как не нужно и как нужно ставить hookи
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.