Тётя Клава не даёт!

altЭтот пример будет блокировать клавиатуру и мышь. Т.е. при правильной работе получившейся проги, не мышь, не клавивтура даже «Гав» нам против не скажут. А мышь вообще шевелится перестанет! Один косяк — блокировка снимается при нажатии Ctrl+Alt+Del :-( Ничего здесь поделать мы не можем, ведь мы используем не свою функцию, а не документированную функцию библиотеки «User32.dll» из стандартной поставки XP.

Кодим

Итак, для написани этого проекта нам понадобится как всегда только Delphi, ну и конечно установленная XP, на том компе, на котором будет работать эта прога. Этот пример довольно прост, но весь его смак заключается в том, что функция блокировки клавитуры написана на Assamblere (язык низкого уровня, но код в нём ужасно быстрый), а в Дельфи есть встроенный ASM. Так что, если ты это читаешь, то ты сегодня научишся пользоваться ASM’ом, встроенным в Delphi.

Полностью юнит проги выглядит так:

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure BlockInput; external ‘user32.dll’;
procedure TForm1.Button1Click(Sender: TObject);
begin
asm
push 1
call BlockInput
end;
end;
end.
Как наверное ты уже догадался, procedure BlockInput; external ‘user32.dll’; — это и есть недокументированная процедура из «User32.dll». А дальше идёт процедура нажатия на кнопку, в которой и вызывается ASM строкой asm, дальше передаем параметры в стек вручную через push. Возможны только два варианта:

* 1 — Заблокировать
* 2 — Разблокировать

Покончим с этим

Ну вот вроде бы и всё! Прога готова, пользуйся наздоровье. Но это только пример использования процедуры BlockInput;. Если захочешь усовершенствовать, то начни с добавления таймера, чтобы клава блокировалась через определённое количество времени. А потом ещё бы хорошо сделать её неприметной.

Понравилась статья? Поделиться с друзьями: