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

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;. Если захочешь усовершенствовать, то начни с добавления таймера, чтобы клава блокировалась через определённое количество времени. А потом ещё бы хорошо сделать её неприметной.

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

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: