Страница: 1 | 2 |
По-моему SetWindowLong, но я могу ошибаться Для этого SetWindowsHookEx, если поискать в сети, найдешь немало примеров клавиатурных шпионов... (только писать прийдется не на VB функцию обработки клавишь, ее в dll необходимо размещать) А ещё есть GetAsyncKeyState Ra$cal, GetAsyncKeyState + Тфймер = глючно, ненадежно Странно, но я пока за 1.5 года ни одного глюка не увидел (не считая запоминания нажатых кнопок: то есть выкл. таймер, нажал например ентер, включ. таймер, в котором if getasynckeystate(13) then msgbox"", и увидел этот самый месаж). Но впринципе если нужно отлавливать комбинации, можно использовать RegisterHotKey, токо им пользоваться я не умею ваще Неет, я немного не про то, попросту бывает ложно срабатывает, т.е. нажимаем при печати на клаве кнопки по очереди, а они бывает все-роавно срабатывают, как вместе нажатые... Странно, пока ни одного ложного срабатывания не увидел. Хм... ну что же... дай хоть гляну на твой код, может я в молодости что не так делал... хотя это вряд-ли... Я программу сделал при помощи GetAsyncKeyState, Кнопы называется, менеджер Hot кеев. Пока ни одного письма с описанием этой проблемы не было. Возможно причиной траблов были настройки клавиатуры - время повтора и время задержки (теоретически). Ну а код обычный: If GetAsyncKeyState(hot1(12)) And GetAsyncKeyState(hot2(12)) And GetAsyncKeyState(hot3(12)) Then EnableShutDown: SetSystemPowerState W98S, XPHiber: Exit Sub Она у меня на хомяке лежит - можешь посмотреть (170Kb). А у тя нету примеров с хуком, а то я хочу добавить управление мышом с доп. клавиатуры, а GetAsyncKeyState не затирает нажатую кнопку, и при нажатии "4" помимо движения мыши влево ещё и 4 будет пытfться печататься. Блин народ, чтобы использовать хуки не объязательно писать dll... Есть такой хук, точнее группа хуков Journal Hooks, так вот эти хуки могут быть установлены в самом .ехе и при этом быть глобальными (т.е. отлавливать все сообщения в системе)... у них есть недостаток, они работают только до нажатия ctrl+alt+del, т.е. еслы ты установил такой хук, а пользователь нажал 3 пальца, то хук автоматически анинсталлится... т.ч. это надо предусмотреть... можно писать все на vb без проблем, а как с журнальными хуками работать посмотри на rsdn.ru, также могу тебе пример кейлогера с использованием журнальных хуков на Си выслать... Chill, скинь мне на мыло Есть и такие хуки, но кто-то на этом форуме говорил, что при вызове диспетчера задач, они автоматически снимаются, не ставя в известность, об этом, программу... Я сам конечно этого не видел, но говорят... sne, скинь примерчик с хуком кинуть кину, но он так и недоделан Писан на PB, там если разберешься что я хотел сделать - хорошо
Вопрос: Перехват нажатия клавишь
Добавлено: 30.04.04 17:53
Автор вопроса: .::EclipsE::. | ICQ: 208952501
Как можно перехватить нажатия клавишь? (не в моем приложении, а вообще)
Ответы
Всего ответов: 26
Номер ответа: 1
Автор ответа:
dNW
Вопросов: 30
Ответов: 683
Профиль | | #1
Добавлено: 30.04.04 18:55
Номер ответа: 2
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #2
Добавлено: 30.04.04 21:53
Номер ответа: 3
Автор ответа:
Ra$cal
ICQ: 8068014
Вопросов: 18
Ответов: 817
Web-сайт:
Профиль | | #3
Добавлено: 01.05.04 10:29
Номер ответа: 4
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #4
Добавлено: 01.05.04 14:19
Номер ответа: 5
Автор ответа:
Ra$cal
ICQ: 8068014
Вопросов: 18
Ответов: 817
Web-сайт:
Профиль | | #5
Добавлено: 01.05.04 20:23
Номер ответа: 6
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #6
Добавлено: 01.05.04 23:09
Номер ответа: 7
Автор ответа:
Ra$cal
ICQ: 8068014
Вопросов: 18
Ответов: 817
Web-сайт:
Профиль | | #7
Добавлено: 02.05.04 10:05
Номер ответа: 8
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #8
Добавлено: 02.05.04 12:12
Номер ответа: 9
Автор ответа:
Ra$cal
ICQ: 8068014
Вопросов: 18
Ответов: 817
Web-сайт:
Профиль | | #9
Добавлено: 02.05.04 12:21
Номер ответа: 10
Автор ответа:
Ra$cal
ICQ: 8068014
Вопросов: 18
Ответов: 817
Web-сайт:
Профиль | | #10
Добавлено: 02.05.04 12:30
Номер ответа: 11
Автор ответа:
Chill
ICQ: 554200
Вопросов: 101
Ответов: 343
Профиль | | #11
Добавлено: 02.05.04 13:04
Номер ответа: 12
Автор ответа:
Ra$cal
ICQ: 8068014
Вопросов: 18
Ответов: 817
Web-сайт:
Профиль | | #12
Добавлено: 02.05.04 16:22
Номер ответа: 13
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #13
Добавлено: 02.05.04 20:54
А вот если писать глобальный хук за клавой/мышкой, то всю обработку событий, прижется делать в этой самой dll... Хотя... не знаю на сколько это правомерно, но я отлавливал события в dll, а потом с помощью SendMessage, отсылал данные на хэндл окошка, которое сам потом сабклассил из VB... Вроде бы работало, но не знаю, можно ли так делать...
Номер ответа: 14
Автор ответа:
Ra$cal
ICQ: 8068014
Вопросов: 18
Ответов: 817
Web-сайт:
Профиль | | #14
Добавлено: 02.05.04 23:07
Номер ответа: 15
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #15
Добавлено: 03.05.04 01:43