|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
19.01.2011, 00:58 | #1 |
Пользователь
Регистрация: 04.10.2010
Сообщений: 11
|
SetWindowsHookEx
Есть код dll'ки среда dev c++ как я понял для компиляции dll требует еще *.h . а может и не требует
PHP код:
dll.h такого содержания прекрасно компилируется но ясно не робит PHP код:
Код:
Последний раз редактировалось Dalt; 19.01.2011 в 01:07. |
20.01.2011, 09:52 | #2 |
Пользователь
Регистрация: 04.10.2010
Сообщений: 11
|
Чтобы разобраться с SetWindowsHookEx воспользовался исходником cyberguru
PHP код:
|
20.01.2011, 09:53 | #3 |
Пользователь
Регистрация: 04.10.2010
Сообщений: 11
|
Вот листинг hks.cpp:
PHP код:
|
20.01.2011, 14:15 | #4 |
Форумчанин
Регистрация: 23.04.2009
Сообщений: 346
|
Особливо доставило как 'не ламак' из второго поста использует RegisterServiceProcess в третьем. Автор труда для студии либо счастливый обладатель машины времени (и нажал не тот рычаг не в ту сторону), либо данная копипаста была сослоупочена с какого-нибудь форума последний пост на котором датируется прошлым веком.. или, в самом терминальном варианте развития событий, автор студийного исходника и есть слоупок
Для ТС- с виду из кода первого поста должно бы все работать.. иначе скорее в ВЛ85.. ой, то есть в ДебагМод.. ну или в с++ дев должон же быть юзермодный отладчик.
Нет, ну правда..
|
23.01.2011, 17:04 | #5 |
Форумчанин
Регистрация: 23.04.2009
Сообщений: 346
|
кстати, попробовал скомпилить код из поста №1.. выходной код довольно чудовищен и управление на установку хука не приходит вообще. дллмайн срабатывает, длл_аттач приходит в нее, а вот управление на
hHOOK=SetWindowsHookEx(WH_KEYBOARD( HOOKPROC)KeyboardProc,hInst,0); не передается. почему - спрашивайте компилятор на сколько я знаю си case DLL_PROCESS_ATTACH: должна бы передать управление на функу установки хука идущую ниже. такие дела
Нет, ну правда..
|
23.01.2011, 21:22 | #6 |
Пользователь
Регистрация: 04.10.2010
Сообщений: 11
|
Спасибо. Действительно код как пример применения хука совсем не подходит. Услышал слух что консольное окно не принимает сообщений. возможно дело и в этом тож
|
23.01.2011, 23:27 | #7 |
Форумчанин
Регистрация: 23.04.2009
Сообщений: 346
|
да там как раз в длл все дело. компилятор генерирует сотни какого то кода, чего то там какие то атомы ищет и пр. нафиг ему это-непонятно и в итоге управление на то, что указано не передается
вот маленький пример - все работает
Нет, ну правда..
|
24.01.2011, 18:07 | #8 |
Форумчанин
Регистрация: 23.04.2009
Сообщений: 346
|
О! Суть такова, что из дллмайн конечно можно вызывать всякую шушару типа функции установки хука и прочего, но это чревато. В некоторые компиляторы вроде как ставится защита от выполнения в дллмайн всяких-разных опасных вещей, в частности-любых экспортируемых из других длл функций.
Если будет интересно, вот кой-какая статья http://www.transl-gunsmoker.ru/2009/01/dllmain.html да и помимо нее информация хоть немного, но есть по этой же теме.
Нет, ну правда..
|
24.01.2011, 21:46 | #9 |
Пользователь
Регистрация: 04.10.2010
Сообщений: 11
|
Осмысляю потихоньку. SetWindowsHookEx в dll и сводит с ума компилятор.
|
25.01.2011, 07:49 | #10 |
Форумчанин
Регистрация: 23.04.2009
Сообщений: 346
|
там всего лишь надо создать в длл экспортируемые функции установки и съема хука и вызывать их из управляющей программы
Код:
global_hInstance=hInstance; вообщем я попробовал-значение это в глобальной переменной сохраняться не захотело, соответственно и хук не ставится без этого значения, функа _SetHook была компилем нафига-то переименована в _Z8_SetHookv. Я впервые вижу эти ваши Dev C++, но я уже люто, бешено их ненавижу!!11 надо либо разбираться с настройками всего этого хозяйства, либо юзать чегонить типа студии - там и проще и кодес генерируется не столь похожим на гуано.. что стоит одно вот это Код:
Нет, ну правда..
Последний раз редактировалось yuran666666; 25.01.2011 в 07:51. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
SetWindowsHookEx не могу перехватить нажатие клавиши. | flug | Общие вопросы Delphi | 0 | 10.12.2010 09:19 |
Получить ID процесса для setwindowshookex | TwiX | Общие вопросы Delphi | 2 | 20.05.2010 20:00 |