

Hola gente, recien me plante un problema para agregar funcionalidad a 
una aplicacion: Mi aplicacion esta minimizada en el tray de windows (al 
lado del reloj) y queria que con alguna combinacion de teclas activarla 
y hacer algo, bueno como esto implica varias APIs y demas yerbas de S.O. 
hice primero una pequea app de ejemplo (en C5b, no tengo otra cosa)

Esta app registra toda la actividad del teclado, aunque la aplicacion 
este minimizada, atras de todo, etc. ya que lo que hace es registrarse 
en el sistema operativo para recibir todos los mensajes del keyboard.

Tiene algunas cosas interesantes sobre el manejo de APIs y sus 
estructuras...

Las APIs utilizadas son:

SetWindowsHookEx
CallNextHookEx
UnhookWindowsHookEx
LowLevelKeyboardProc (Callback)


Que lo disfruten, saludos...    

Pachu

-- 
   A.U.S. Enrique Ferreyra
   
   
---
F. Carabez escribi:

Hola Enrique!
 
Gracias por el aporte!
 
 
 se puede interceptar el CTRL+ALT+SUPRIMIR ?
---


Se puede detectar, tenes que reemplazar el codigo que revisa por CtrlA en la funcion KeyTrap por este:

     IF Band(KeyState(), (0200h + 0400h)) = (0200h + 0400h)

        IF MiParam.vkCode = DeleteKey
           Glo:Extra = 'Ctrl+Alt+Delete fue presionado!'
        End

     End

Ahora esto todavia no evita que el Ctrl+Alt+Delete sea procesado por el S.O. habria que probar con no llamar a la CallNextHookEx y retornar algun valor positivo para que no se siga procesando, pero creo que Windows lee primero que todos el Ctrl-Alt-Delete, ES LA FUNCIONALIDAD MAS IMPORTANTE!!!!

Si haces algo tene muy en cuenta que esta funcion, la KeyTrap es en realidad llamada por el S.O. y este usa pasaje de parametros PASCAL, si revisas en la APP el prototipo de la funcion esta puesto asi:

(LONG nCode, LONG wParam, LONG lParam), LONG, PASCAL

Algo poco comun 

Saludos!
Pachu

