Ver Mensaje Individual
  #14  
Antiguo 17-08-2011
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Reputación: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
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{WH_KEYBOARD}, @KeyboardHook, HInstance, GetCurrentThreadId);
 WHookMouse:= SetWindowsHookEx(7{WH_MOUSE}, @MouseHook, HInstance, GetCurrentThreadId);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  UnhookWindowsHookEx(WHookKeyboard);
  UnhookWindowsHookEx(WHookMouse);
end;

end.

Saludos.

Última edición por escafandra fecha: 17-08-2011 a las 11:42:02.
Responder Con Cita