Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Как заблокировать ввод

Delphi , ОС и Железо , Клавиши

Как заблокировать ввод

Автор: Andrew Pastushenko

А руки сами тянутся к Reset'у

Вот недокументированная функция из User32.dll, которая блокирует ввод (мышь, клавиатуру кроме Ctrl+Alt+Del). При нажатии Ctrl+Alt+Del все разблокируется :-(


procedure BlockInput; external 'user32.dll'; 

Передаем параметры в стек вручную через push, иначе что-то глючит:

1 - заблокировать
0 - разблокировать


procedure Block;
asm
  push 1
  call BlockInput
end;

procedure UnBlock;
asm
  push 0
  call BlockInput
end;

Программный код на Delphi, использующий функцию BlockInput из библиотеки User32.dll, чтобы блокировать или разблокировать ввод пользователя (клавиатура и мышь). Код содержит два процедура: Block для блокировки ввода и UnBlock для разблокировки.

Функция BlockInput принимает одиночный параметр, который может быть равен 1 для блокировки ввода или 0 для разблокировки. Код использует инструкцию push в ассемблере, чтобы поместить желаемое значение на стек, а затем вызывает функцию BlockInput с помощью инструкции call.

Пример кода:

procedure Block; // блокировка ввода
asm
  push 1 // поместить 1 (блокировка) на стек
  call BlockInput // вызвать функцию BlockInput
end;
procedure UnBlock; // разблокировка ввода
asm
  push 0 // поместить 0 (разблокировка) на стек
  call BlockInput // вызвать функцию BlockInput
end;

Для использования этого кода обычно вызываются эти процедуры в начале и конце программы, чтобы блокировать и разблокировать ввод, когда это необходимо.

Однако, пожалуйста, обратите внимание, что есть более современные и безопасные способы достижения этой функциональности в современных версиях Delphi. Например, можно использовать.unit System.SysUtils и ее функцию BlockInput, которая не имеет отношения к функции User32.dll.

Обновленный код:

uses System.SysUtils;

procedure Block;
begin
  BlockInput(True);
end;

procedure UnBlock;
begin
  BlockInput(False);
end;

Этот код использует функцию BlockInput из unit System.SysUtils, которая является более современной и безопасной способой блокировки или разблокировки ввода.

Статья рассказывает о недокументированной функции из User32.dll, которая позволяет заблокировать ввод с помощью процедуры BlockInput, а также предлагает примеры кода на языке Pascal для реализации этой функции.


Комментарии и вопросы


:: 2012-01-15 18:57:19 :: re:Как заблокировать ввод

пользователь: Dennis.

Ничерта не работает. Клава и мышь, как работали, так и продолжают, при старте приложение не выдаёт никаких ошибок.
По коду - ощущение такое, что чего-то там нет...
"external 'user32.dll'" - как-бы ни о чём.


:: 2012-05-10 17:49:50 :: re:Как заблокировать ввод

пользователь: kan.

Это для старых виндов


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Клавиши ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100

Время компиляции файла: 2024-05-19 17:53:24
2024-05-19 19:12:41/0.0069060325622559/2