Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ERROR_HOOK_NEEDS_HMOD 
V
    Опции темы
ilyuha
Дата 30.11.2008, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 111
Регистрация: 10.7.2007

Репутация: нет
Всего: нет



GremlinProg, 
Цитата(GremlinProg @  30.11.2008,  16:29 Найти цитируемый пост)
таким образом, убери свитч и убери hInstance из шары, вытащи ее просто глобально, рядом с секцией 

не совсем уверен, что я тебя правильно понял, но вот:
Код

#include "stdafx.h"
#include "KeyToMouseInterpreter.h"

#ifdef _MANAGED
#pragma managed(push, off)
#endif

KeyToMouseInterpreter k2m;

HHOOK hKeyBoardHook=NULL;
HINSTANCE hInstance=NULL;

LRESULT CALLBACK KeyboardProc(int code,WPARAM wParam,LPARAM lParam)
{
    if((code==HC_ACTION)&&(lParam>=0))
        k2m.KeyPressed(wParam);
    return CallNextHookEx(hKeyBoardHook,code,wParam,lParam);
}

extern "C" __declspec(dllexport) int SetHook(int Active)
{
    if(Active){
        hKeyBoardHook=SetWindowsHookEx(WH_KEYBOARD_LL,(HOOKPROC)KeyboardProc,hInstance,0);
        return (int)hInstance;//GetLastError();
    }
    else
        return (UnhookWindowsHookEx(hKeyBoardHook)!=0);
}

BOOL APIENTRY DllMain( HINSTANCE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
                     )
{
    hInstance=hModule;
    return TRUE;
}

#ifdef _MANAGED
#pragma managed(pop)
#endif

если да, то все-равно не пашет...

Это сообщение отредактировал(а) ilyuha - 30.11.2008, 18:35
PM MAIL   Вверх
ama_kid
Дата 30.11.2008, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: 5
Всего: 95



ilyuha, я предполагаю, что засунув свой хук в dll, ты по сути сделал не совсем верно: при нахождении внутри dll этот хук вместо того, чтобы осуществлять переключение в контекст процесса, установившего хук, фактически осуществляет приаттачивание dll-ки к каждому процессу. Вполне возможно, у тебя из-за этого и получается нулевой hInstance, т.к. в контексте другого процесса он скорее всего портится другим значением (видимо, нулевым)... Если так уж хочешь использовать dll - то попробуй вместо WH_KEYBOARD_LL использовать просто WH_KEYBOARD (интересно самому, получится или нет, сам никогда его не использовал smile ) Ну и самое верное (и стопиццот раз работающее) решение - не использовать dll, а устанавливать хук внутри своего приложения...


--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
ilyuha
Дата 30.11.2008, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 111
Регистрация: 10.7.2007

Репутация: нет
Всего: нет



Цитата(ama_kid @  30.11.2008,  21:50 Найти цитируемый пост)
то попробуй вместо WH_KEYBOARD_LL использовать просто WH_KEYBOARD (интересно самому, получится или нет, сам никогда его не использовал  )

безрезультатно  smile 
не юзать длл? но ведь, заюзав поиск по форуму я видел, что многие юзают WH_KEYBOARD и WH_KEYBOARD_LL люди юзают и в длл.. чо за полтергейст?)))

ну, и самое интересное: только что  дал сорцы человеку, он отбилдил их(у него Виста х64) - ошибки этой нет(есть другая, но кассается она уже моего алгоритма...).
ннарод, подскажите... моск уже рвется в клочья smile 
PM MAIL   Вверх
ama_kid
Дата 30.11.2008, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: 5
Всего: 95



ilyuha, а ты пробовал отлаживать свою dll? Я бы начал с того, что поставил бряк на PROCESS_ATTACH и посмотрел, когда и сколько раз происходит вызов библиотеки и попробовал отыскать момент, когда hInctance превращается в нуль...


--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
ilyuha
Дата 1.12.2008, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 111
Регистрация: 10.7.2007

Репутация: нет
Всего: нет



по ходу, народ,  топчимся мы на одном месте - и вас я, похоже, в растеренность ввел и у самого идей нет...  smile 
в аттач кладу сорцы либы - посмотрите плиз )

Присоединённый файл ( Кол-во скачиваний: 6 )
Присоединённый файл  MHlib.rar 16,97 Kb
PM MAIL   Вверх
ilyuha
Дата 2.12.2008, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 111
Регистрация: 10.7.2007

Репутация: нет
Всего: нет



парни, ну посмотрите пожалуйста... мне просто надо знать, запустится ли хук у других. может у меня с системой чо - уже всякие мысли smile код-то установки хука, так сказать, классический - особых различий моего кода и кода других форумчан я, поискав по форуму, не увидел

Это сообщение отредактировал(а) ilyuha - 2.12.2008, 17:40
PM MAIL   Вверх
ama_kid
Дата 4.12.2008, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: 5
Всего: 95



ilyuha, выявлены два нижеследующих замечания:
1) В конструкторе CursorIntervals::CursorIntervals() у тебя возникает ошибка "Использование неинициализированной переменной Conf". Соответственно, из-за этого у тебя рушился конструктор основного класса, т.к. обработки исключений нет... После добавления инициализации указателя NULL-ом при определении - все вроде стало нормально.
2) В хуковой процедуре - происходит неправильная обработка нажатий клавиш (собственно, ты обрабатываешь не то, что надо). Почитай про параметры LowLevelKeyboardProc.
В общем, после второго замечания мне стало лень переделывать на правильный вариант smile Самое главное - хук после исправления п.1 отрабатывает...


--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
ilyuha
Дата 4.12.2008, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 111
Регистрация: 10.7.2007

Репутация: нет
Всего: нет



спасибо всем огромное(особенно ama_kid'у smile )! проблему можно считать решенной smile
кому не лень, поставте плиз за меня плюсик ama_kid'у(я не могу - постов мало) smile

тему закрываю
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0516 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.