Отключение клавиатуры в Windows C ++? - PullRequest
2 голосов
/ 01 августа 2009

Как я могу полностью отключить клавиатуру с помощью C ++ в Windows? Под полным отключением я имею в виду, что даже Ctrl + Alt + Удалить не работает. Я подумал об использовании драйвера клавиатуры, но я думаю, что вам нужно перезагрузить компьютер после его установки, но, поскольку мне нужно отключить его только на пару минут, это не будет работать.

Ответы [ 5 ]

10 голосов
/ 01 августа 2009

Это не совсем возможно.

WinLogon разработан как единый процесс, который перехватывает нажатие клавиши Ctrl + Alt + Del , даже когда все остальные вещи зависают или умирают. Это защита от вредоносных сессий и т. Д. Таким образом, очевидного обходного пути нет.

Возможно, драйвер фильтра клавиатуры сделает ваш запрос возможным, но это настоящий драйвер ядра.

7 голосов
/ 01 августа 2009

Вы не можете отключить Ctrl - Alt - Удалить , не удаляя клавиатуру и не заменяя драйвер клавиатуры, он генерирует уведомление уровня ядра.

1 голос
/ 01 августа 2009

Вы можете использовать функцию BlockInput . Но он не блокирует CTRL + ALT + DEL .

1 голос
/ 01 августа 2009

Вы можете установить клавиатуру и отфильтровать сообщения, но вам может потребоваться, чтобы ваше приложение было самым верхним окном. Даже тогда Ctrl + Alt + Del не будет отфильтровано.

Вот SetWindowsHookEx на MSDN

Пример Подключение клавиатуры

0 голосов
/ 02 августа 2009

Хорошо, здесь несколько случайных предложений. У меня нет однозначного ответа, но вот с чего бы начать:

1) SetupDiRemoveDevice - это, вероятно, API, который вы хотите вызвать. Хотя, чтобы позвонить, вам нужно будет сделать много других вызовов перечисления устройств. Перечислите ваши устройства HID и USB и найдите клавиатуру. Начните с поиска VID / PID фактического устройства для начинающих.

2) Удалите драйверы kdbclass.sys и kbdhid.sys. Вы будете бороться с системным файлом Windows, чтобы сделать это. Я понятия не имею, будет ли это работать, но звучит интересно и просто.

3) Написать драйвер фильтра USB. Ваш драйвер должен будет знать (или быть передан) vid / pid устройства для фильтрации, но он может работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...