Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Перехват нажатия клавишь Добавлено: 30.04.04 17:53  

Автор вопроса:  .::EclipsE::. | ICQ: 208952501 
Как можно перехватить нажатия клавишь? (не в моем приложении, а вообще)

Ответить

  Ответы Всего ответов: 26  

Номер ответа: 1
Автор ответа:
 dNW



Вопросов: 30
Ответов: 683
 Профиль | | #1 Добавлено: 30.04.04 18:55

По-моему SetWindowLong, но я могу ошибаться 

Ответить

Номер ответа: 2
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #2
Добавлено: 30.04.04 21:53

Для этого SetWindowsHookEx, если поискать в сети, найдешь немало примеров клавиатурных шпионов... (только писать прийдется не на VB функцию обработки клавишь, ее в dll необходимо размещать)

Ответить

Номер ответа: 3
Автор ответа:
 Ra$cal



ICQ: 8068014 

Вопросов: 18
Ответов: 817
 Web-сайт: www.rascalspb.narod.ru
 Профиль | | #3
Добавлено: 01.05.04 10:29

А ещё есть GetAsyncKeyState

Ответить

Номер ответа: 4
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #4
Добавлено: 01.05.04 14:19

Ra$cal, GetAsyncKeyState + Тфймер = глючно, ненадежно

Ответить

Номер ответа: 5
Автор ответа:
 Ra$cal



ICQ: 8068014 

Вопросов: 18
Ответов: 817
 Web-сайт: www.rascalspb.narod.ru
 Профиль | | #5
Добавлено: 01.05.04 20:23

Странно, но я пока за 1.5 года ни одного глюка не увидел (не считая запоминания нажатых кнопок: то есть выкл. таймер, нажал например ентер, включ. таймер, в котором if getasynckeystate(13) then msgbox"", и увидел этот самый месаж). Но впринципе если нужно отлавливать комбинации, можно использовать RegisterHotKey, токо им пользоваться я не умею ваще

Ответить

Номер ответа: 6
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #6
Добавлено: 01.05.04 23:09

Неет, я немного не про то, попросту бывает ложно срабатывает, т.е. нажимаем при печати на клаве кнопки по очереди, а они бывает все-роавно срабатывают, как вместе нажатые...

Ответить

Номер ответа: 7
Автор ответа:
 Ra$cal



ICQ: 8068014 

Вопросов: 18
Ответов: 817
 Web-сайт: www.rascalspb.narod.ru
 Профиль | | #7
Добавлено: 02.05.04 10:05

Странно, пока ни одного ложного срабатывания не увидел.

Ответить

Номер ответа: 8
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #8
Добавлено: 02.05.04 12:12

Хм... ну что же... дай хоть гляну на твой код, может я в молодости что не так делал... хотя это вряд-ли...

Ответить

Номер ответа: 9
Автор ответа:
 Ra$cal



ICQ: 8068014 

Вопросов: 18
Ответов: 817
 Web-сайт: www.rascalspb.narod.ru
 Профиль | | #9
Добавлено: 02.05.04 12:21

Я программу сделал при помощи GetAsyncKeyState, Кнопы называется, менеджер Hot кеев. Пока ни одного письма с описанием этой проблемы не было. Возможно причиной траблов были настройки клавиатуры - время повтора и время задержки (теоретически). Ну а код обычный:

If GetAsyncKeyState(hot1(12)) And GetAsyncKeyState(hot2(12)) And GetAsyncKeyState(hot3(12)) Then EnableShutDown: SetSystemPowerState W98S, XPHiber: Exit Sub

Ответить

Номер ответа: 10
Автор ответа:
 Ra$cal



ICQ: 8068014 

Вопросов: 18
Ответов: 817
 Web-сайт: www.rascalspb.narod.ru
 Профиль | | #10
Добавлено: 02.05.04 12:30

Она у меня на хомяке лежит - можешь посмотреть (170Kb). А у тя нету примеров с хуком, а то я хочу добавить управление мышом с доп. клавиатуры, а GetAsyncKeyState не затирает нажатую кнопку, и при нажатии "4" помимо движения мыши влево ещё и 4 будет пытfться печататься.

Ответить

Номер ответа: 11
Автор ответа:
 Chill



ICQ: 554200 

Вопросов: 101
Ответов: 343
 Профиль | | #11 Добавлено: 02.05.04 13:04

Блин народ, чтобы использовать хуки не объязательно писать dll...

Есть такой хук, точнее группа хуков Journal Hooks, так вот эти хуки могут быть установлены в самом .ехе и при этом быть глобальными (т.е. отлавливать все сообщения в системе)... у них есть недостаток, они работают только до нажатия ctrl+alt+del, т.е. еслы ты установил такой хук, а пользователь нажал 3 пальца, то хук автоматически анинсталлится... т.ч. это надо предусмотреть... можно писать все на vb без проблем, а как с журнальными хуками работать посмотри на rsdn.ru, также могу тебе пример кейлогера с использованием журнальных хуков на Си выслать...

Ответить

Номер ответа: 12
Автор ответа:
 Ra$cal



ICQ: 8068014 

Вопросов: 18
Ответов: 817
 Web-сайт: www.rascalspb.narod.ru
 Профиль | | #12
Добавлено: 02.05.04 16:22

Chill, скинь мне на мыло

Ответить

Номер ответа: 13
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #13
Добавлено: 02.05.04 20:54

Есть и такие хуки, но кто-то на этом форуме говорил, что при вызове диспетчера задач, они автоматически снимаются, не ставя в известность, об этом, программу... Я сам конечно этого не видел, но говорят...

А вот если писать глобальный хук за клавой/мышкой, то всю обработку событий, прижется делать в этой самой dll... Хотя... не знаю на сколько это правомерно, но я отлавливал события в dll, а потом с помощью SendMessage, отсылал данные на хэндл окошка, которое сам потом сабклассил из VB... Вроде бы работало, но не знаю, можно ли так делать...

Ответить

Номер ответа: 14
Автор ответа:
 Ra$cal



ICQ: 8068014 

Вопросов: 18
Ответов: 817
 Web-сайт: www.rascalspb.narod.ru
 Профиль | | #14
Добавлено: 02.05.04 23:07

sne, скинь примерчик с хуком

Ответить

Номер ответа: 15
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #15
Добавлено: 03.05.04 01:43

кинуть кину, но он так и недоделан :( Писан на PB, там если разберешься что я хотел сделать - хорошо :)

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам