|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Июл 14, 2004 22:16:18 Собсна, в полном отупении пребываю :(( Тема, значицца такая: надо фильтр на клаву поставить, чтоб рубить нехорошие комбинации клавишьЪ. Хук 3-го кольца не катит. Надо драйвер писать :) А я дальше использования ipfilterdriver не ходил... Ну да ладно лезу в ДДК. Там есть такой сэмпл "kbdfiltr". Ладна, читаем доки... Есть такая функция там "KbFilter_IsrHook". Ага! Это, как я понял, нечто похожее на обработчик прерывания от клавы. Значит, здесь и надо контролировать нажатия кнопок... KbFilter_IsrHook( IN PDEVICE_OBJECT DeviceObject, IN PKEYBOARD_INPUT_DATA CurrentInput, IN POUTPUT_PACKET CurrentOutput, IN OUT UCHAR StatusByte, IN PUCHAR DataByte, OUT PBOOLEAN ContinueProcessing, IN PKEYBOARD_SCAN_STATE ScanState ); Как я понял, "CurrentInput"- отсюда брать скан- код нажатой клавиши: CurrentInput->MakeCode. Ладно, поверил. Но тут же M$ обещает, что в CurrentInput->Flags лежат флаги, указывающие на то, что произошло с клавишей: KEY_MAKE The key was pressed. KEY_BREAK The key was released. Ладно, ставлю DbgPrint- распечатываю скан- код и параметр "Flags". И тут- то перестаю врубаться :(( При нажатии на клавиши Flags всегда равен 0, вне зависимости, нажимается ли клавиша, или отпускается. Мало того, пори нажатии на следующую клавишу, печатается сначала сканкод предыдущей клавиши, а затем реално нажимаемой. Ничего не понял :( Help please!! |
|
|
Дата: Июл 14, 2004 22:48:29 · Поправил: rsrc В твоем случае лучше всего юзать KbFilter_ServiceCallback() из kbdfiltr.sys При нажатии, отпускании клавиш генерируются разные последовательности скан-кодов, это как раз последовательность пакетов от InputDataStart…. до (не включая) InputDataEnd З.Ы. Как раз буквально на днях я закончил писать фильтр-драйвер для клавы :) Можешь заценить его, качать здесь |
|
|
Дата: Июл 15, 2004 08:50:52 Спасибо, пошел смотреть. :)) |
|
|
Дата: Июл 15, 2004 08:57:05 Слушай,rsrc, скинь мне пожалуйста сырец хотя бы своей KbFilter_ServiceCallback(). Заценю. Если не хочешь здесь, скинь на мыло 731@list.ru. Очень надо. |
|
|
Дата: Июл 15, 2004 09:12:38 · Поправил: rsrc Только что выслал на мыло! |
|
|
Дата: Июл 15, 2004 10:37:18 Спасиба! Пошел смотреть. |
|
|
Дата: Июл 15, 2004 20:18:14 rsrc А организация под win98 другая? Или поже прокатит? |
|
|
Дата: Июл 15, 2004 20:25:41 .vxd - Win95/98 .sys - WinNT |
|
|
Дата: Июл 15, 2004 21:31:34 А у тебя *.vxd. Нет? |
|
|
Дата: Июл 16, 2004 09:03:25 А зачем он мне - Win98 ведь умерла :) |
|
|
Дата: Июл 16, 2004 10:52:09 А если WDM писать, под 98 не пойдет? |
|
|
Дата: Июл 16, 2004 11:07:58 Не знаю, даже и проверить мне негде - нету у меня Win98 |
|
|
Дата: Июл 16, 2004 11:29:55 {А зачем он мне - Win98 ведь умерла :)} Умерла, в первый раз таке слышу. По статистике семейством 9* пользуются 25%. Про совместимость не забыл? |
|
|
Дата: Июл 16, 2004 19:17:59 · Поправил: rsrc drone Как токо переделаешь KbFilter_ServiceCallback(), то сразу ее кинь сюда! Может кому-нить потом пригодится!!! |
|
|
Дата: Июл 16, 2004 22:01:57 Кинь мне свой исходник. Как будет время доделаю. avalonec@mail.ru |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.120 |