|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
25.08.2007, 18:49 | #1 |
Регистрация: 10.08.2007
Сообщений: 4
|
Клава масдай!!!
Привет всем. Люди, как можно запретить нажатие любой клавиши на клавиатуре(можно ли при этом не юзать Hookи ) или вообще её отключить?
|
25.08.2007, 19:14 | #2 |
Форумчанин
Регистрация: 01.08.2007
Сообщений: 222
|
// используемые переменные
var Dummy: integer = 0; OldKbHook: HHook = 0; implementation function KbHook(code: Integer; wparam: Word; lparam: LongInt): LongInt; stdcall; begin if code < 0 then Result := CallNextHookEx(oldKbHook, code, wparam, lparam) else Result := 1; end; // включение клавы procedure TForm1.KeyBoardOn(Sender: TObject); begin if OldKbHook <> 0 then begin UnHookWindowshookEx(OldKbHook); OldKbHook := 0; end; SystemParametersInfo(SPI_SETFASTTAS KSWITCH, 0, 0, 0); SystemParametersInfo(SPI_SCREENSAVE RRUNNING, 0, 0, 0); end; // выключение клавы procedure TForm1.KeyBoardOff(Sender: TObject); begin SystemParametersInfo(SPI_SETFASTTAS KSWITCH, 1, @Dummy, 0); SystemParametersInfo(SPI_SCREENSAVE RRUNNING, 1, @Dummy, 0); OldKbHook := SetWindowsHookEx(WH_KEYBOARD, @KbHook, HInstance, 0); end; Некоторые замечания по поводу этих процедур: Если программу упаковать UPX-ом - клава не будет отключаться (причин не знаю). В ДОС-окне клава будет работать (FAR, VC и т.п.) Состояния клавиш NumLock,CapsLock,ScrollLock не отслеживаются и могут быть изменены. Возможно EnableHardwareKeyboard более эффективен и прост, но я тоже, к сожалению, не знаю, как им пользоваться. Если вместо WH_KEYBOARD поставить WH_MOUSE, то можно выключать таким образом мышь :-)
Жить тоже вредно, от этого умирают!!!
|
25.08.2007, 22:59 | #3 |
Регистрация: 10.08.2007
Сообщений: 4
|
Cпасибо Demien за представленный код. Но клаву отключить полностью не удается. Срабативают комбинации ctrl+alt+del, ctrl+esc, alt+f4 и тд.
Может как-то отключить ctrl и alt? |
25.08.2007, 23:36 | #4 |
Форумчанин
Регистрация: 01.08.2007
Сообщений: 222
|
Попробуй это:
// Включение режима SystemParametersInfo(SPI_SCREENSAVE RRUNNING, 1, 0, 0); // Выключение режима SystemParametersInfo(SPI_SCREENSAVE RRUNNING, 0, 0, 0); Должно получиться!
Жить тоже вредно, от этого умирают!!!
|
26.08.2007, 05:06 | #5 |
Вот я и
Форумчанин
Регистрация: 07.04.2007
Сообщений: 501
|
Чувак, есть простой и в тоже верный совет, запоминай: ПРАВОЙ РУКОЙ ВЫДЕРАЕШЬ ШНУР КЛАВЫ ИЗ СИСТЕМНИКА... Это конечно работает на УРА...хи-хи
Исходники программ - http:\\www.kort.3dn.ru
|
26.08.2007, 10:39 | #6 |
Great Code Monkey
Форумчанин
Регистрация: 09.08.2007
Сообщений: 533
|
Demien, я конечно понимаю, что DelphiWorld это неплохой ресурс, но копировать бездумно оттуда все не есть хорошо, ибо этот трюк с экранной заставкой работает только под 9х.
Надо править реестр и регистрировать горячие клавиши. Знаешь, KORT, левой тоже вроде работает |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Клава&мышь | MAcK | Win Api | 5 | 23.08.2007 15:33 |