Bloquear el teclado y el ratón no es muy buena idea. ¿No será mejor que tu aplicación sea un servicio?
De cualquier forma, te muestro como realizar el bloqueo:
Código Delphi
[-]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
public
end;
var
Form1: TForm1;
WHookKeyboard: HHOOK = 0;
WHookMouse: HHOOK = 0;
implementation
{$R *.dfm}
function KeyboardHook(Code, wParam, lParam: Integer): Integer; stdcall;
begin
if (Code = HC_ACTION) then
Result:= -1
else Result:= CallNextHookEx(WHookKeyboard, Code, wParam, lParam);
end;
function MouseHook(Code, wParam, lParam: Integer): Integer; stdcall;
var
Point: TPoint;
begin
if(Code = HC_ACTION) then
begin
GetCursorPos(Point);
ScreenToClient(Form1.Handle, Point);
if PtInRect(Form1.GetClientRect, Point) then
begin
Result:= -1;
exit;
end;
end;
Result:= CallNextHookEx(WHookMouse, Code, wParam, lParam);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
WHookKeyboard:= SetWindowsHookEx(2, @KeyboardHook, HInstance, GetCurrentThreadId);
WHookMouse:= SetWindowsHookEx(7, @MouseHook, HInstance, GetCurrentThreadId);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
UnhookWindowsHookEx(WHookKeyboard);
UnhookWindowsHookEx(WHookMouse);
end;
end.
Saludos.