Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Резидент блокировки клавиатуры


Автор: Guest_Sasha 10.4.2003, 07:14
Ребята помогите написать резидентную программу которая бы загружалась при загрузке Windows и блокировала сочетание клавиш Alt + "=".

Автор: XpyDi 10.4.2003, 07:53
Самое простое используй HOOK, прикрепляйся ко всем просецам и фильтруй кнопки(сообщения).
Способ потяжелее пиши драйвер, который будет на низком уровне фильтровать это дело.

Автор: man2002ua 10.4.2003, 09:58
Хук не работает в консоли..., типа Far.
Можно конечно через ключ реестра - (не помню блин! Если надо - скажи, я поищу). В этом ключе прописаны библиотеки, к-е должны подключаться к каждому запускаемому процессу. Это делает Windows.
Сам понимаешь, если твое dll активно будет влазить в дела других процессов - чем это грозит. Лучшее решение - драйвер.

Автор: stab 10.4.2003, 10:46
Цитата
В этом ключе прописаны библиотеки, к-е должны подключаться к каждому запускаемому процессу


поищи, плиз, ключик этот.

Автор: man2002ua 10.4.2003, 12:13
HKLM\Software\Microsoft\WindowsNT\CurrentVersion\Windows\APPINIT_DLLS
по-осторожней с ним.

Автор: man2002ua 10.4.2003, 13:41
Кстати я этим никогда не пользовался и не советую. Просто для образования дал ключик.

Автор: Unregistered 10.4.2003, 13:50
Блокировка клавиш должна срабатывать в Дос приложениях тоесть в консоли !
Прийдется браться за .*vxd драйвер счего начнем ?

Автор: man2002ua 10.4.2003, 14:22
vxd работает только в 95/98/Me...
sys - в NT/2K/XP.
Но это абсолютно две разные вещи.
В любом случае - понадобится NuMega DriverStudio (для vxd u sys) (SoftIce В комплекте) и VC.
Ссылку на NuMega DriverStudio ищи в "Давайте собирать ссылки на полезные программы", где-то здесь на форме.
Vxd конечно на порядок проще, чем sys.

Автор: XpyDi 10.4.2003, 17:07
Цитата(man2002ua @ 10.4.2003, 09:58)
Хук не работает в консоли..., типа Far.
Можно конечно через ключ реестра - (не помню блин! Если надо - скажи, я поищу). В этом ключе прописаны библиотеки, к-е должны подключаться к каждому запускаемому процессу. Это делает Windows.
Сам понимаешь, если твое dll активно будет влазить в дела других процессов - чем это грозит. Лучшее решение - драйвер.

Ну коряво написанный драйвер, намного страшнее коряво написанной dll'ки.
В принципе сещуствует еще несколько способов внедриться в чужое пространство, но лучше всего, когда нужно обрабатывать все процессы это использовать драйвер.

Автор: Pakshin A. S. 11.4.2003, 08:12
Писал "прикол" для школы, правда злой, по отключению клавы (моя задумка не осуществилась,т. к. пожалел учителя). В общем я раскопал слудующее:
1) SystemParametresInfo(SPI_SCREENSAVERRUNNING, 1, 0, 0) - отключаем Ctrl+Alt+Del, Alt+Tab, Ctrl+Esc, правде эта штука не работает в XP
2) После этого писал следующее
Код

procedure BlockKey;
asm
 push 1
 call BlockInput
end;

тем самым блокирую клавиатуру и мышь
3) Позавершению писал
Код

SystemParametresInfo(SPI_SCREENSAVERRUNNING, 0, 0, 0);
asm
 push 0
 call BlockInput
end;


Может чем-нибудь это вам поможет...
P. S. Вообще я полностью всеми руками и ногами за установку Hooka.

Автор: Pakshin A. S. 11.4.2003, 08:15
Ещё вспомнил! Есть функция GetAsyncKeyState(KeyCode). Запусти таймер и напиши вот это, я так думаю:
Код

 if (GetAsyncKeyState({AltKey}) <> 0) and (GetAsyncKeyState({=Key}) <> 0)  
  then
   (*отправь нулевое значение, только как не знаю*)


Автор: Vco 11.4.2003, 13:47
Код

asm
@a1:cli
jmp @a1
end;

А этот код вообще работу винды осталавливаеть вроде smile.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)