![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Manve |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 30.7.2004 Репутация: нет Всего: 1 |
Как-то давно Oleg1973 предложил вариант глобального хука клавы ( http://forum.vingrad.ru/index.php?showtopic=27143 ). Я его перевел на С++ и, в результате после запуска программы, у меня винда перестает реагировать на нажатия клавиш, а при движении мыши пс спикер разрывается жалобным писком.
Вот код:
P.S. Винда у меня WinXP бех всяких сервис паков. И еще: если я запускаю эту прогу на VMware то там все работает нормально. |
|||
|
||||
| Олег М |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 436 Регистрация: 10.6.2004 Где: Москва Репутация: 7 Всего: 7 |
Так, глобальные хуки вроде только в ДЛЛках работают. А у тебя, насколько я понимаю, ехешник.
|
|||
|
||||
| Manve |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 30.7.2004 Репутация: нет Всего: 1 |
Нет мона и в ехешнике, читай http://forum.vingrad.ru/index.php?showtopic=27143
|
|||
|
||||
| S.A.P. |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2664 Регистрация: 11.6.2004 Репутация: 9 Всего: 71 |
Manve у тебя какая винда стоит? У меня на 98 не пошло.
|
|||
|
||||
| Олег М |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 436 Регистрация: 10.6.2004 Где: Москва Репутация: 7 Всего: 7 |
Ну почитал - там вроде про извращения говорится. А по-нормальному если - то в ДЛЛ. Вот в МСДНе написано
Ещё здесь http://www.sources.ru/cpp/tips/system_wide_hook.shtml |
||||
|
|||||
| Manve |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 30.7.2004 Репутация: нет Всего: 1 |
WinXp без сервис паков и патчей
Добавлено @ 18:46 Олег М Ничего в этом извращенного нету. А что если задача такая что необходимо только один экзешник? |
|||
|
||||
| oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: 1 Всего: 34 |
Manve
а где у тебя ехпорт hook_proc ? Олег М все вполне легально насчет хука бех длл с точки зрения вындоса dll и exe одинаковые файлы только расщирение разное -------------------- SST 465555 icq 200-512-712 |
|||
|
||||
| Manve |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 30.7.2004 Репутация: нет Всего: 1 |
Он и без него пашет нормально, кстати у твоей проги тот же эфект что и у моей Добавлено @ 19:36 Зделал экспорт - все равно теже глюки |
|||
|
||||
| Олег М |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 436 Регистрация: 10.6.2004 Где: Москва Репутация: 7 Всего: 7 |
А зачем? Если механизм работы глобальных хуков, насколько я понимаю, состоит в том, что винда подгружает ДЛЛку с хуком к каждому процессу. В чём выгода от того, что функция будет находится в ехешнике? oleg1973, я так и не въехал для чего это надо. |
|||
|
||||
| oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: 1 Всего: 34 |
при установке хука винда мапит в пространство процесса файл в котором находится непосредственно процедура, по теории это должна быть длл, но так как формат файла РЕ, одинаков как для длл так и для ехе, то виндосу становится пофигу что грузить, можно сделать файл который будет работать как ехе, а если переименовать то станет как длл,и все опять же легально выглядит для вындос загрузчика файлов
для углубленного понимания процесса загрузки файлов рекомендую поковырять или найти сорцы ntdll Олег М а необходимость иметь кейлог в ехе в моем KGB Radmin так и сделано -------------------- SST 465555 icq 200-512-712 |
|||
|
||||
| Manve |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 30.7.2004 Репутация: нет Всего: 1 |
Выше описаная проблема была решена следующим образом: надо было просто убрать MessageBox, да и вообще нельзя было что бы функция hock_proc ожидала действий от пользователя. Например MessageBox ждет от пользователя пока он нажмет кнопку окей и соответственно останавливается весь цикл обработки сообщений от клавы и мышки в системе. И следовательно нажать кнопку окей не выдет. Во как.
P.S. Это всего лишь мои предположения |
|||
|
||||
| oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: 1 Всего: 34 |
вот 100% рабочий код
пищет в файл лог
-------------------- SST 465555 icq 200-512-712 |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |