две dll один хук
От: s_alen  
Дата: 05.11.06 17:05
Оценка:
Здравствуйте, подскажите, пожалуйста, как решить следующую проблему.
Есть две dll от разных программ, которые отлавливают один и тот же хук. По отдельности обе программы работают нормально, а если запустить обе сразу, то работает только последняя.
Как сделать, чтобы работали обе. Я почитал форумы и понял, что надо юзать CreateFileMapping и т.п.
Начало вроде понял:

HANDLE hFile = CreateFile("My.dll", GENERIC_READ, 0,0,OPEN_EXISTING,0, 0);
int size = GetFileSize(hFile, NULL);
HANDLE hMapping = CreateFileMapping(hFile,0,PAGE_READONLY,0,0,NULL);
void * module = MapViewOfFile(hMapping,FILE_MAP_READ,0,0,size);
if(module!=NULL)
{
Что здесь делать? Какой параметр передать и как, чтобы оба хука заработали.
Что надо писать в головной программе и что в dll.
}



07.11.06 00:21: Перенесено модератором из 'C/C++' — Павел Кузнецов
Re: две dll один хук
От: Аноним  
Дата: 06.11.06 08:13
Оценка:
Здравствуйте, s_alen, Вы писали:

_>Здравствуйте, подскажите, пожалуйста, как решить следующую проблему.

_>Есть две dll от разных программ, которые отлавливают один и тот же хук. По отдельности обе программы работают нормально, а если запустить обе сразу, то работает только последняя.
_>Как сделать, чтобы работали обе. Я почитал форумы и понял, что надо юзать CreateFileMapping и т.п.
_>Начало вроде понял:

_>HANDLE hFile = CreateFile("My.dll", GENERIC_READ, 0,0,OPEN_EXISTING,0, 0);

_>int size = GetFileSize(hFile, NULL);
_>HANDLE hMapping = CreateFileMapping(hFile,0,PAGE_READONLY,0,0,NULL);
_>void * module = MapViewOfFile(hMapping,FILE_MAP_READ,0,0,size);
_>if(module!=NULL)
_>{
_> Что здесь делать? Какой параметр передать и как, чтобы оба хука заработали.
_> Что надо писать в головной программе и что в dll.
_>}

Разобрался сам. Тема закрыта.
Re[2]: две dll один хук
От: Аноним  
Дата: 06.11.06 21:37
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Разобрался сам. Тема закрыта.


Так отпишись, в чём дело-то было. Другим тоже интересно...
Re[3]: две dll один хук
От: Аноним  
Дата: 06.11.06 23:13
Оценка:
Че там интересного.. CallNextHookEx не вызывал он наверно
Re[3]: две dll один хук
От: Аноним  
Дата: 07.11.06 05:15
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Аноним, Вы писали:


А>>Разобрался сам. Тема закрыта.


А>Так отпишись, в чём дело-то было. Другим тоже интересно...


Немного коряво делал CallNextHookEx

После замены
if(iCode>=0
{
...
}
else return CallNextHookEx(NULL, iCode, wParam, lParam);
return 0;

на просто
return CallNextHookEx(NULL, iCode, wParam, lParam);

Все стало ОК.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.