![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| VinSmile |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 19.11.2006 Репутация: нет Всего: нет |
Доброго всем времени суток!
Я пол часа лазил по поиску но так ничего и не нанашол А проблема у меня такая... Есть длл (моя длл) и есть прога которая ее использует... И вот мне нужно из длл вызвать функцию которая описана в порге которая ее использует. Судя из того что я нашол, тут должны использоваться колбек функции. Но вот только реализация описывалась только со стороны приложения... А как это реализовано в самой длл? Я очень вас прошу написать пару пустых функций демонстрирующих эту взаимосвязь. Тоесть: 1) Что нужно передать в длл. 2) Как правильно описать функцию для вызова из длл. 3) Ну и как именно ее вызвать. Очень надеюсь на вашу помощь!!! |
|||
|
||||
| casey |
|
||||||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 20.12.2006 Где: Украина Репутация: нет Всего: 2 |
Да, тут надо использовать callbackи, но ты должен иметь ввиду, что данная длл-ка может использоваться только одним процессом.
Я когда-то это писал, поэтому вырежу пример из готовой проги: *.exe :
- это нужно для передачи адреса каллбэк-функции в длл 2)
сама каллбэк ф-ция 3) Перед вызовом каллбэка из длл нужно передать ее адрес
*.dll 1)
- объявления 2)
- получение и сохранение адреса для последующего вызова 3)
- сам вызов делается так Может чего забыл, не получится - пиши |
||||||||||||
|
|||||||||||||
| VinSmile |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 19.11.2006 Репутация: нет Всего: нет |
Огромнейшее спасибо!!! Суть полностью уловил!!! Поставил бы плюс в репу, но прав нехватает
|
|||
|
||||
| VinSmile |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 19.11.2006 Репутация: нет Всего: нет |
И опять я возвращаюсь к этой теме
Вот код моего приложения: DLL
CPP
"H" (подключен и там и там)
когда коментю строку (*HookKeyProc)(code,wParam,lParam); все работает отлично, хук ставиться и при любом нажатии/отпускании клавиши (для любого окна) весело выскакивает меседжбокс, но вот только стоит ее вернуть на место..... Для окна срабатывает, а потеряю его с фокуса, раз сработает, я закрываю меседжбокс, и все, даже при востановлении фокуса ничего не работает... Вот так |
||||||
|
|||||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 27 Всего: 158 |
и не будет. callback имеет смысл только в пределах адресного пространства твоей программы. а SetWindowsHookEx подгружает твою dll во все(почти) процессы - в их адресных пространствах адрес твоей функции ничего не значит. в данном случае для общения dll с основной программой нужно воспользоваться каким-либо IPC. например - сообщениями, разделяемыми секциями... ps. фпоиск по "SetWindowsHookEx WH_KEYBOARD". |
|||
|
||||
| VinSmile |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 19.11.2006 Репутация: нет Всего: нет |
А можно поконкретней, что за технология, названия функций, чтобы я знал что искать P.S. "например - сообщениями" - Имееться в виду чтото наподобии PostMassage ? |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 27 Всего: 158 |
||||
|
||||
| VinSmile |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 19.11.2006 Репутация: нет Всего: нет |
Ок... Спасибо! Буду смотреть
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |