Карта сайта 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 для реализации этой функции.


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

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




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


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


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 16:08:00/0.0031371116638184/0