FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Vaciar el buffer del teclado
Posts: 234
Joined: Tue Sep 01, 2009 07:55 AM
Vaciar el buffer del teclado
Posted: Thu Feb 20, 2025 09:13 AM

Buenos días:

Pongo un ejemplo de lo que pretendo hacer y no consigo.

Estamos en un dialogo modal, en el que hay varios gets y botones, y un setkey(chr("v"), funcion())

Lo que pretendo es que cuando toma el control la "funcion" hace su tarea y al acabar no le queden pulsaciones del teclado por procesar.

He usado la funcion hb_KeyClear() pero no veo que vacie la cola de pulsaciones de windows.

¿Sabeis si existe alguna forma de hacer lo que pretendo?

Muchas gracias

Saludos

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Vaciar el buffer del teclado
Posted: Thu Feb 20, 2025 09:36 AM

Has probado con SysRefresh() ?

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 234
Joined: Tue Sep 01, 2009 07:55 AM
Re: Vaciar el buffer del teclado
Posted: Thu Feb 20, 2025 10:05 AM

Antonio:

Gracias por la sugerencia, pero si, me mantiene la cola del teclado

Gracias.

Un saludo

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Vaciar el buffer del teclado
Posted: Thu Feb 20, 2025 10:23 AM
Desde C se haría asi:
#include <windows.h>

void VaciarMensajesTeclado() {
    MSG msg;
    // Itera sobre los mensajes de teclado que están en la cola y los remueve.
    while (PeekMessage(&msg, NULL, WM_KEYFIRST, WM_KEYLAST, PM_REMOVE)) {
        // Puedes procesarlos si es necesario, o simplemente descartarlos.
    }
}
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Vaciar el buffer del teclado
Posted: Thu Feb 20, 2025 10:25 AM
Para probarlo desde Harbour:
#pragma BEGINDUMP
#include <windows.h>
#include <hbapi.h>

void VaciarMensajesTeclado( void ) {
    MSG msg;
    // Itera sobre los mensajes de teclado que están en la cola y los remueve.
    while (PeekMessage(&msg, NULL, WM_KEYFIRST, WM_KEYLAST, PM_REMOVE)) {
        // Puedes procesarlos si es necesario, o simplemente descartarlos.
    }
}

HB_FUNC( VACIATECLADO )
{
   VaciarMensajesTeclado();
}

#pragma ENDDUMP
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 234
Joined: Tue Sep 01, 2009 07:55 AM
Re: Vaciar el buffer del teclado
Posted: Thu Feb 20, 2025 11:13 AM

Perfecto.

Ha funcionado perfecto.

Muchisimas gracias.

Un saludo

Continue the discussion