![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| ilyuha |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 10.7.2007 Репутация: нет Всего: нет |
ERROR_HOOK_NEEDS_HMOD
Cannot set nonlocal hook without a module handle. вот такая вот ошибка уже съела мне моск код:
подскажите плиз |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 7 Всего: 118 |
#pragma data_seg(".SHAREDDATA")
убери бяку попробуй. я вот так линвокал (при нахждении инстанса в .data):
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| ilyuha |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 10.7.2007 Репутация: нет Всего: нет |
||||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 7 Всего: 118 |
ну я просто смерджил секции и дал нужные им права..
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| ilyuha |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 10.7.2007 Репутация: нет Всего: нет |
т.е мне надо только имена файлов поменять на свои, или все сложнее?
как-то сомневаюь, что в этом дело... ЗЫ забыл сказать - 3 компилятора пробовал - 2005-ый, 2008-ой и мингв |
|||
|
||||
| ama_kid |
|
|||
![]() АСУТП-кодер ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1460 Регистрация: 5.3.2007 Где: Москва Репутация: 5 Всего: 95 |
ilyuha, интересует как и где вызываешь SetHook? И как загружается твоя библиотека? Что мешает перенести установку данного хука в основное приложение (для хука данного типа ведь не обязательно dll использовать)?
P.S. На первый взгляд - вроде все правильно, хорошо бы отладчиком пройтись и посмотреть, чему равен hInstanсe на момент установки хука, вдруг он действительно нулевой? -------------------- самурай без меча подобен самураю с мечом, но только без меча |
|||
|
||||
| ilyuha |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 10.7.2007 Репутация: нет Всего: нет |
ama_kid, Вызываю очень просто(просто тестовый проеккт маленький создал):
хы, не знал но, полюбому, раз уж начал - надо ведь разобратся |
||||
|
|||||
| ilyuha |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 10.7.2007 Репутация: нет Всего: нет |
||||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 27 Всего: 158 |
а проверить сначала hKeyBoardHook?
|
|||
|
||||
| ilyuha |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 10.7.2007 Репутация: нет Всего: нет |
dumb, ммм... а смысл? ведь если вызов SetWindowsHookEx завершается ошибкой(что и наблюдается), она полюбому вернет NULL.
ЗЫ проверил - так и есть |
|||
|
||||
| ama_kid |
|
|||
![]() АСУТП-кодер ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1460 Регистрация: 5.3.2007 Где: Москва Репутация: 5 Всего: 95 |
нет, я про то, что глобальные низкоуровневые хуки WH_KEYBOARD_LL и WH_MOUSE_LL можно устанавливать непосредственно из приложения, для них не надо писать отдельную dll.
Ты проверил чему равно hInstance при установке хука? Ну вдруг мы чего-то не знаем про твою систему? -------------------- самурай без меча подобен самураю с мечом, но только без меча |
|||
|
||||
| ilyuha |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 10.7.2007 Репутация: нет Всего: нет |
ama_kid, только что посмотрел - действительно 0
|
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
на сколько я сейчас помню, общая секция имеет имя ".shared" и переменные, которые в ней расположены, должны быть обязательно проинициализированы, т.е. в данном случае, hInstance не будет слинкована в этой секции
PS: ради инициализации hInstance в DllMain, switch не нужен, hModule ведь приходит корректный на все вызовы DllMain -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| ilyuha |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 10.7.2007 Репутация: нет Всего: нет |
GremlinProg, проинициализировал. результат тот же...
|
|||
|
||||
| GremlinProg |
|
||||||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
How do I share data in my DLL with an application or with other DLLs?
я же писал, убери свич для hInstance, или показывай код статической инициализации hInstance Добавлено через 5 минут и 47 секунд кстати, по поводу hInstance в общей секции:
т.е. даже если ты засунешь hInstance в шару, она будет меняться всякий раз, при отображении длл в очередной процесс, т.е. корректным останется только последний вызов, остальные после этого будут ссылаться на чужие hInstance таким образом, убери свитч и убери hInstance из шары, вытащи ее просто глобально, рядом с секцией -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
||||||||||
|
|||||||||||
![]()
|
| Правила форума "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. |