La Web del Programador: Comunidad de Programadores
 
    Pregunta:  1278 - VACIAR EL BUFFER DEL TECLADO
Autor:  Rodrigo Goncalves
Hola! Estoy desarrollando una aplicacion y necesito poder vaciar el buffer del teclado y el mousse en un momento determinado. Es decir, luego de atender un evento del usuario (mousse o teclado), necesito que antes de salir del evento borre todos las acciones que el usuario hizo mientras esperaba. Desde ya mil gracias.

  Respuesta:  Eduardo Cañedo
Conozco una forma de controlar el buffer durante la acción, no se si sea lo que buscas.

En los eventos KeyDown, KeyUp, KeyPress, MouseDown y MouseUp encontramos las variables KeyCode, KeyAscii y Button, las cuales podemos manipular antes de que concluya el evento, podemos cambiar estos valores en el transcurso del evento a nuestra conveniencia, para anular los teclas se usa KeyCode = 0 ó KeyAscii = 0, dependiendo del evento y para el mouse se usa el Button = -1, ejms:

El Text1 no contendra nada por mas que se teclee:

Private Sub Text1_KeyPress(KeyAscii As Integer)
KeyAscii = 0
End Sub

En el Text1 se escribirá solo la letra "a" sea cual sea la tecla que se oprima:

Private Sub Text1_KeyPress(KeyAscii As Integer)
KeyAscii = 97
End Sub

Puedes usar tambien el evento KeyPreview del Form y ponerlo en True, para que independientemente del objeto que tenga el Focus caches las teclas que se han presionado y manipularlas en dichos eventos pero en el Form, ejm:

En este caso te posicionas en el Text1 y escribes, ademas de no aparecer texto en el Text1, el mensaje NO aparecera, por que se ha anulado la tecla desde la Form y este tiene el KeyPreview = True:

Private Sub Form_KeyPress(KeyAscii As Integer)
KeyAscii = 0
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
MsgBox "¿Que se presiono?"
End Sub