Ver Mensaje Individual
  #6  
Antiguo 01-07-2024
buenarquero buenarquero is offline
Miembro
 
Registrado: feb 2008
Posts: 33
Reputación: 0
buenarquero Va por buen camino
código que usé

Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
Este comportamiento es a todas luces "raro".
No da muchos detalles de las 2 aplicaciones, ni de qué teclas quieres desactivar.
Tampoco explicas qué código has utilizado "que no te funciona".

Yo sigo pensando que la solución son los hooks de teclado a nivel de sistema. De otra forma sólo funcionarán cuando tu aplicación esté abierta.
Hay diferentes hilos en los foros que hablan sobre el tema, si buscas encontrarás.
Había hace tiempo un componente de [Roman] que solucionaba esto, y aunque actualmente la web no está disponible, "tirando" de WayBackMachine, se puede acceder a ella.
Revisa este enlace:
https://web.archive.org/web/20050908...m/users/roman/
Y concretamente a este componentes (dentro está la explicación):
https://web.archive.org/web/20050214...oman/hooks.php

Transcribo el código que usé para los hooks. A ver si lo hago bien porque no lo he hecho nunca y no se si cumplirá las recomendaciones del foro.
El código lo saqué de Trucos Delphi, si no recuerdo mal.

INTERCEPTAR EL TECLADO MEDIANTE HOOKS

Declarar variables

Código Delphi [-]
var    Form1: TForm1;  
KBHook: HHook;
 
function KeyboardHookProc(Code: Integer; WordParam: Word; LongParam: LongInt): LongInt; stdcall;

implementation.

Instalar el Hook

procedure TForm1.FormCreate(Sender: TObject) ;
begin 
KBHook:=SetWindowsHookEx(WH_KEYBOARD,{callback >}@KeyboardHookProc,  HInstance, GetCurrentThreadId()) ;
end;

Función que intercepta el teclado

function KeyboardHookProc(Code: Integer; WordParam: Word; LongParam: LongInt) : LongInt;
begin 
  case WordParam of  
  vk_Left:   begin {Instrucciones a realizar} end;  
  vk_Right:  begin {Instrucciones a realizar} end; 
  vk_Up:     begin {Instrucciones a realizar} end;  
  vk_Down:   begin {Instrucciones a realizar} end;  
  end; 
  Result:=0; { Para evitar que Windows pase las pulsaciones de teclas a la ventana de
  destino, el valor del resultado debe ser un valor distinto de cero.}
end;

Liberar el hook

procedure TForm1.FormDestroy(Sender: TObject) ;
begin  
  UnHookWindowsHookEx(KBHook) ;
end;

Última edición por Neftali [Germán.Estévez] fecha: 02-07-2024 a las 09:19:32. Razón: Añadir TAGs al código
Responder Con Cita