Иногда возникает необходимость в программной блокировке устройств ввода. Для чего это нужно? Да для разных случаев - для контроля доступа к компьютеру чтобы не кто не мог его использовать Ваше отсутствие или ради обычной безобидно шутки :о)
Для начала необходимо создать глобальный Hook на устройства:
var m_OldMHook: HHook = 0; k_OldKBHook: HHook = 0;
implementation
function KbHook(code: Integer; wparam: Word; lparam: LongInt): LongInt; stdcall; begin if code < 0 then Result := CallNextHookEx(k_oldKbHook, code, wparam, lparam) else Result := 1; end;
И так блокировка клавиатуры:
procedure KeyBoardOff; begin k_OldKbHook := SetWindowsHookEx(WH_KEYBOARD, @KbHook, HInstance, 0); end;
И включение клавиатуры:
procedure KeyBoardOn; begin if k_OldKbHook <> 0 then begin UnHookWindowshookEx(k_OldKbHook); k_OldKbHook := 0; end; end;
Блокировка кнопок мышки:
procedure MouseOff; begin m_OldMHook := SetWindowsHookEx(WH_MOUSE, @MOUSEHook, HInstance,0); end;
Включение кнопок мышки:
procedure MOUSEON; begin if m_OldMHook <> 0 then begin UnHookWindowshookEx(m_OldMHook); m_OldMHook := 0; end; end;
Вот в принципе и всё, вызывая соответствующие функции, мы можем контролировать клавиатуру и мышку!