|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
28.03.2008, 13:49 | #1 |
Форумчанин
Регистрация: 04.03.2008
Сообщений: 176
|
Клавиатура
Всем доброго времени суток.
Вопрос: можно ли програмно отключить всю клавиатуру, если можно то как, а ёще потом включить. |
28.03.2008, 13:56 | #2 |
Он лайн
Форумчанин
Регистрация: 26.09.2007
Сообщений: 173
|
Да можно
// используемые переменные
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, то можно выключать таким образом мышь :-) Если что пишите |
28.03.2008, 15:01 | #3 | |||
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Цитата:
Цитата:
Цитата:
Последний раз редактировалось mihali4; 28.03.2008 в 15:29. |
|||
29.03.2008, 10:35 | #4 | |||
Он лайн
Форумчанин
Регистрация: 26.09.2007
Сообщений: 173
|
Цитата:
Цитата:
Цитата:
Я совсем уже не чего не понял |
|||
29.03.2008, 15:26 | #5 |
Форумчанин
Регистрация: 15.08.2007
Сообщений: 118
|
Procedure BlockInput(ABlockInput : Boolean); stdcall; external 'USER32.DLL';
... BlockInput(True); - блокируем клаву и мышь... BlockInput(False); - разблокируем... Только при нажатии CTRL+ALT+DELETE блокировка отключается((( Вешаем на таймер) |
29.03.2008, 15:50 | #6 |
Форумчанин
Регистрация: 04.03.2008
Сообщений: 176
|
EnableHardwareKeyboard
Что подключать, как с ней работать |
29.03.2008, 15:52 | #7 |
Форумчанин
Регистрация: 04.03.2008
Сообщений: 176
|
=LeonZone=
Спасибо, но мышь - это уже лишнее |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Экранная клавиатура | aesoem | Софт | 9 | 13.03.2009 10:59 |
Программируемая клавиатура | Valent | Компьютерное железо | 0 | 05.05.2008 04:16 |
Клавиатура | Pusher | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 0 | 22.03.2008 00:47 |
Клавиатура и мышь | Борис2 | Паскаль, Turbo Pascal, PascalABC.NET | 4 | 11.12.2007 23:32 |
клавиатура с Delphi | Илюха | Общие вопросы Delphi | 4 | 04.11.2007 19:20 |