La Web del Programador: Comunidad de Programadores
 
    Pregunta:  5984 - INTERCEPTAR INTERRUPCIóN DE MOUSE Y TECLADO
Autor:  Fabricio Gastiaburu
Como puedo hacer para interceptar los eventos del mouse y del teclado en windows?, no solo sobre mi aplicación sino sobre cualquier aplicación.

  Respuesta:  Juan Fco. Jiménez
Conseguí hacer esto, te puede valer de algo. Los eventos del ratón (excepto el movimiento) se reconoce como pulsaciones raras. En principio esto detecta la tecla pulsada, lo que quiere decir que le da igual 'm' que 'M' puesto que la tecla es la misma. Se lo pasé a un colega para ver si le tiraba con un teclado que tiene funciones especiales (volumen, calculadora, suspender, apagar...) pero dice que no detecta esas teclas. Espero que te sirva de algo.

Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer

Private Sub Form_Load()
Timer1.Interval = 1
End Sub

Private Sub Timer1_Timer()
For intAscii = 1 To 255
buffer = 0
buffer = GetAsyncKeyState(intAscii)
If intAscii = 255 Then Tiempo = 0

If buffer <> 0 Then
Caption = Chr(intAscii) & " - " & intAscii
End If
Next
End Sub

Ah! más cosas: Evidentemente no diferencia doble clic porque lo que detecta es lo que le entra por el puerto o lo que sea; seguro que con la API keybd_event se pueda hacer, pero no tengo ni idea de como se usa.

Suerte.