Ver Mensaje Individual
  #3  
Antiguo 10-07-2004
NeWNeO NeWNeO is offline
Miembro
 
Registrado: ago 2003
Posts: 35
Reputación: 0
NeWNeO Va por buen camino
Prueba...

Yo te puedo ayudar, pero lo que te voy a decir anula tanto el teclado como el raton.

Usaremos una función que viene en el user32.dll denominada "BlockInput", y que corta toda comunicación con los periféricos del usuario (teclado y ratón)

Código Delphi [-]
private
 function FunctionExists(LaFunction: string;DllFile:string; var p: pointer):  boolean;
// Con esta función comprobaremos la disponibilidad de la función
public
 procedure SetInput(Stat: boolean); // Aquí modificaremos el estado


function TForm1.FunctionExists(LaFunction: string;DllFile:string; var p: pointer): boolean;
var
lib: THandle;
begin
 Result := false;
 p := NIL;
 if LoadLibrary(PChar(DllFile)) = 0 then exit; // Cargamos la libreria
 lib := GetModuleHandle(PChar(DllFile)); // Obtenemos el handle de la libreria
 if lib <> 0 then // Si existe el handle
 begin
  // Obtenemos la dirección de la función que necesitamos
  p := GetProcAddress(lib, PChar(LaFunction));
  if p <> NIL then Result := true;
 end;
end;

procedure TForm1.SetInput(Stat: Boolean);
var
 xBlockInput : function(Block: BOOL): BOOL; stdcall;
begin
// Nos aseguramos que la función está disponible, la cargamos, y ejecutamos
 if FunctionExists('BlockInput','USER32.DLL', @xBlockInput) then xBlockInput(Stat) 
else showmessage('No se pudo cargar la función especificada'); 
end;

Puedes hacer pruebas poniendo un timer a 5, 10 seg... para que te desbloquee el teclado, ¡o si nos deberás reiniciar el PC!

"FunctionExists" te sirve para cargar y ejecutar cualquier proceso o función que necesites
Suerte

Última edición por roman fecha: 23-06-2005 a las 22:55:59. Razón: Cortar líneas demasiado largas
Responder Con Cita