Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Перехват клавиатуры [D7, WinXP]


Страницы:   1 2

Dmitry_177 ©   (2007-05-28 20:11:00) 

Вот интересно.. перехват клавиатуры можно осуществить хуком сообщений WH_KEYBOARD или WH_KEYBOARD_LL..

А если нужно перехватывать клавиатуру путем перехвата API функции? Какую функцию следует перехватывать?


  (2007-06-12 16:52:00) [1]

Удалено модератором


  (2007-06-12 16:52:00) [2]

Удалено модератором


  (2007-06-12 16:51:00) [3]

Удалено модератором


Rouse_   (2007-05-30 21:21:00) [4]


> Dmitry_177   (30.05.07 20:22) [29]
> А что насчет этого?

WH_KEYBOARD_LL даст тебе то-же...


Dmitry_177   (2007-05-30 20:22:00) [5]

А что насчет этого?

> Или еще лучше, сделать перехват PeekMessage и GetMessage,
>  а там смотреть WM_KEYDOWN?


Rouse_   (2007-05-30 19:53:00) [6]


> IRP_MJ_READ и не забыть про IoSetCompletionRoutine?

какие еще умные слова ты знаешь?:)


Dmitry_177   (2007-05-30 19:42:00) [7]

Или еще лучше, сделать перехват PeekMessage и GetMessage, а там смотреть WM_KEYDOWN =)


Dmitry_177   (2007-05-30 18:19:00) [8]


> Назначить обработчик на IRP_MJ_INTERNAL_DEVICE_CONTROL.


Я так подумал.. может лучше IRP_MJ_READ и не забыть про IoSetCompletionRoutine?


oxffff   (2007-05-30 15:51:00) [9]

Открывай DDK и Соломона,Руссиновича. Там есть все.
Или Oney, Walter Programming the Microsoft Windows Driver Model


Rouse_   (2007-05-30 15:50:00) [10]

Следующий ответ будет отправкой в район DDK :)


oxffff   (2007-05-30 15:47:00) [11]

To Rouse_ ©  
Следующий вопрос будет, что такое IRP пакет, IRP стек, ISR, IRQL, Spinlock и т.д.


Rouse_   (2007-05-30 15:42:00) [12]


> Неужели никто не знает как перехватывать клавиатуру в Ring0?

Назначить обработчик на IRP_MJ_INTERNAL_DEVICE_CONTROL. в нем по приходу IOCTL_INTERNAL_KEYBOARD_CONNECT в IRP стеке придет структура CONNECT_DATA в (Parameters.DeviceIoControl.Type3InputBuffer), в ней переназначаешь ClassService на свой KeyboardClassServiceCallback вида
   VOID  KeyboardClassServiceCallback (    
       IN PDEVICE_OBJECT  DeviceObject,    
       IN PKEYBOARD_INPUT_DATA  InputDataStart,    
       IN PKEYBOARD_INPUT_DATA  InputDataEnd,    
       IN OUT PULONG  InputDataConsumed    );
.  
После чего к тебе пойдет IOCTL_INTERNAL_I8042_HOOK_KEYBOARD. Теперь в Type3InputBuffer будет идти структура INTERNAL_I8042_HOOK_KEYBOARD.
Тебе нужно переопределить контекст устройства на свой и заменить InitializationRoutine (которе будет отвечать за инициализацию - что не обязательно, но вдруг тебе понадобится создавать выделять допбуффера или т.п.) и непосредственно IsrRoutine в который будут приходить данные.
В DDK идет пример простого клавиатурного фильтра.


oxffff   (2007-05-30 15:30:00) [13]

Смотри в сторону HID


oxffff   (2007-05-30 15:28:00) [14]


> Dmitry_177   (30.05.07 15:07) [16]
> Если я спросил значит мне это интересно.. И зачем отговаривать
> меня это делать.. Неужели никто не знает как перехватывать
> клавиатуру в Ring0?


Открой дружок DDK и почитай про драйвера для клав и мышь.


Сергей М.   (2007-05-30 15:14:00) [15]


> Dmitry_177   (30.05.07 15:07) [16]


> Если я спросил значит мне это интересно


Ну раз тебе интересно, то иди на wasm.ru - там найдешь то что ищешь.


Германн   (2007-05-30 15:14:00) [16]


> Т.е. RtlInitUnicodeString() уже перестало быть апи?

Значит мой опиньен слишком хамблистый :)


Rouse_   (2007-05-30 15:11:00) [17]


> Германн ©   (30.05.07 03:06) [9]
> В нулевом кольце, имхо, такое можно реализовать только драйвером.
>  И API-функции тут, имхо, "идут лесом".

Т.е. RtlInitUnicodeString() уже перестало быть апи?


Dmitry_177   (2007-05-30 15:07:00) [18]

Если я спросил значит мне это интересно.. И зачем отговаривать меня это делать.. Неужели никто не знает как перехватывать клавиатуру в Ring0?


Сергей М.   (2007-05-30 14:58:00) [19]


> Dmitry_177   (30.05.07 14:39) [14]
>
>


Бородатый анекдот про неуловимого Джо, надеюсь, знаешь ?)


Dmitry_177   (2007-05-30 14:39:00) [20]


> Он расчитывает, что его не увидят

и это тоже =)


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо