Блокируем клавиатуру и
мышку на определённое время
Автор: Arthur Boynagryan.
Требования: Windows 9x
Введение
Эта программка блокирует клавиатуру и мышку на
компьютере под управлением Windows 9x.
Моё начальство поставило задачу, чтобы
пользователи не могли работать на компьютерах по
окончании рабочего дня (т.е., 7 PM). И в тоже время,
чтобы они могли с утра нормально работать (т.е., в 9
AM).
В определённое время отрубаются все
специальные комбинации клавишь (Ctrl-Alt-Del, Alt-Tab,
Ctrl-Esc, Windows клавиши), затем перехватывает весь ввод
с клавиатуры и события типа WM_LBUTTONDOWN, так что
пользователь уже не сможет ничего сделать на
компьютере. Перезагрузка не поможет, поскольку
программка автоматически садится в автозагрузку
наподобие троянов.
Для перехвата ввода с клавиатуры и мышки
устанавливается глобальная ловушка :) Ловушка -
это точка в механизме сообщений, куда приложение
может установить подпрограммку мониторинга
сообщений, прежде чем они достигнут цели. Для
инсталляции используйте функцию SetWindowsHookEx()
. Она использует 4 параметра:
int idHook : Определяет тип
устанавливаемой ловушки. Параметры: WH_KEYBOARD для
клавиатуры и WH_MOUSE для мышки.
HOOKPROC lpfn: точка входа
процедуры обработки ловушки. В моём случае
процедура обработки ловушки находится в dynamic-link
library (DLL).
HINSTANCE hMod: Handle DLL-ки
содержащей процедуру, на которую указывает
параметр lpfn .
DWORD dwThreadId: Указывает
поток, с которым ассоциируется процедура
обработки ловушки. Если этот параметр равен нулю,
то процедура ловушки ассоциируется со всеми
существующими потоками запущенными в этом же
десктопе.
Для запрета специальных комбинаций (Ctrl-Alt-Del,
Alt-Tab, Ctrl-Esc, Windows key) используется функция SystemParametersInfo() с флагом SPI_SETSCREENSAVERRUNNING ..
При запуске программа проверяет, не была ли она
уже запущена. Если это так, то она завершается.
Иначе она проверяет от куда она запустилась и
инсталлирует себя в системную директорию и в
ключе реестра RunServices. По умолчанию время начала
блокировки назначено на 7 PM, и соответственно
окончание на 9 AM. Это время можно менять в ключе
"HKLM\Software\Windows\CurrentVersion\Explorer\Services". В любой
момент можно снять блокировку путём набора на
клавиатуре "unl0ck" - ловушка автоматически
снимется. Естевственно этот пароль можно в
программе изменить.
Не стесняйтесь адаптировать ловушку под свои
нужды - это поможет Вам лучше понять принцып её
работы.
Downloads
Скачать демонстрашку с
исходником - 47 Kb
|