"fromrus" <77202@users.rsdn.ru> сообщил/сообщила в новостях следующее:
news:3108051@news.rsdn.ru...
> Здравствуйте, quodum, Вы писали:
>
> Q>Здравствуйте, fromrus, Вы писали:
>
> Q>1. Ключевые слова для поиска -- декорирование имён, экспорт, def-файл. Ещё есть замечательные утилиты depends и dumpbin из комплекта MSVC, которые показывают, что на самом деле экспортируется из DLLи.
>
> Q>2. Ещё нужно переменную HHOOK hook положить в разделяемую секцию.
>
> 1.Как обойтись без экспорта деф-файла?Никак?
а кстати hookProc и не обязана экспортироваться, т.к. в SetWindowsHookEx передается адрес hookProc. Ей совершенно не обязательно быть экспортируемой.
Def-файл для экспорта не нах не нужен, проще и быстрее как и сделано через
extern "C" __declspec(dllexport)
Другой момент что судя по тому что ХУКПРОК ((С)

пытается быть экспортируемой да хук глобальной она находится в DLL. Соответственно в момент вызова SetWindowsHookEx ее адрес неизвестен. Его и нужно получить из DLL
1) Используя вариант с экспортом функции + GetProcAddress
2) Засунув в DLL еще одну функцию, которая будет возвращать адрес hookProc
//DLL код
int CALLBACK HookProc(...) {
//сама хуковая процедура
}
extern "C"
void* __declspec(dllexport) GetHookProcAddress(void)
{
retuen HookProc
}
//Exe код
1.получаем адрес GetHookProcAddress
2. Вызываем по адресу из п.1 функцию GetHookProcAddress, она вовращает реальный адрес HookProc в DLL
3. Стави хук и передаем ему адрес HookProc полученный при вызове GetHookProcAddress в п.2
> 2.Что значит "HHOOK hook положить в разделяемую секцию"-что значит разделяемая секция?
>
>
>Posted via RSDN NNTP Server 2.1 beta