Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Hook Roman Con ECO ECO ECO!! (https://www.clubdelphi.com/foros/showthread.php?t=26767)

marceloalegre 02-11-2005 23:32:59

Hook Roman Con ECO ECO ECO!!
 
1 Archivos Adjunto(s)
Buenas tardes a todos:

Bueno hoy estaba muy divertido en mi casa, Mar del Plata, hacia calor asi que me decidi a entretenerme de la mejor forma, cual!? abri la ventana y me puse a programar algunos trabajillos retrasados... :cool:

Entonces para algo que estoy desarrollando, se me ocurrio el usar el hook de roman y hacer algo simple " que todas las teclas esten bloqueadas, pero pasar las letras y nros a un edit.. algo muy simple"..
he de aqui que hice lo que me pareció mas logico... un perform al edit.. pero bueno resulta que tiene Ecoooo (sale 2 veces) aparte lo mas loco de todo es que si debugeo un poco lento no sale con eco, sino ejecuta 2 veces el envio de la tecla... bueno he tratado de hacer varias cosas y nada me sirvio, asi que les muestro mi pequeño problema a ver si pueden darme una mano, quizas mi falta de conocimientos de delphi se estan poniendo hoy a la orden del dia..:D

Código:

form1.Edit1.Perform(WM_CHAR,VKCODE,0);
y les dejo mi fuente de la prueba a ver si alguien me recomienda algun cambio..

Como siempre, de antemano, MIL GRACIAS a todos!

delphi.com.ar 03-11-2005 13:08:52

Cita:

Empezado por kanvictor
...Bueno hoy estaba muy divertido en mi casa, Mar del Plata, hacia calor asi que me decidi a entretenerme ...

Lindo día en tu ciudad, calor, vallas, policías, militares y a la espera del kaiser...
Tu problema es que tu código toma el KeyDown y el KeyUp, por eso lo ves repetido.
Una de las cosas que podrías hacer, es definir la constante LLKHF_UP:
Código Delphi [-]
const
 LLKHF_UP = $00000080;
Y discriminar uno de los momentos:
Código Delphi [-]
  if (PKbdHookInfo(LParam).Flags and LLKHF_UP = 0) then

Resumiendo:
Código Delphi [-]
const
 LLKHF_UP = $00000080;
...
function KbdHook(Code: Integer; WParam, LParam: DWORD): HHook; stdcall;
begin
  if Code = HC_ACTION then
    with PKbdHookInfo(LParam)^ do
      if (Flags and LLKHF_UP = 0) and ( vkCode in [ord('A')..ORD('Z'), ord('0')..ORD('9'), 8]) then
      begin
        form1.Edit1.Perform(WM_CHAR,VKCODE,0);
        Result:=1;
      end
      else
        Result := CallNextHookEx(Hook, Code, WParam, LParam);
end;


Saludos!

Lepe 03-11-2005 13:46:18

¿No se podría enviar un mensaje wm_keydown en lugar de wm_char?

saludos

marceloalegre 03-11-2005 15:43:41

Cita:

Empezado por delphi.com.ar
Lindo día en tu ciudad, calor, vallas, policías, militares y a la espera del kaiser...

jajaj si, pero eso pasa en la famosa "zona de exclusion" por suerte para algunos :) la ciudad esta muerta hasta que salgan los presidentes y no trabajo mañana jejeje! ... aprovechare para marchar el contra de un presidente que nadie quiere.... :)


Gracias por la solucion del hook!,,, ya la implemente sin problemas!.-

PD: LEPE el wm_keydown y wm_keyup no me funcionaron... con el perform... o sea no hacia nada...


La franja horaria es GMT +2. Ahora son las 02:19:13.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi