Récupération "a la volée" de l'état d'une touche du clavier

Signaler
Messages postés
6
Date d'inscription
lundi 30 juillet 2007
Statut
Membre
Dernière intervention
29 janvier 2010
-
Messages postés
6
Date d'inscription
lundi 30 juillet 2007
Statut
Membre
Dernière intervention
29 janvier 2010
-
Bonjour à tous,

Je cherche a récupérer la touche éventuellement enfoncée pendant l'exécution d'une fonction.

exemple :

void toto()
{
bla;
bla;
bla;
RegarderSiUneToucheEstEnfoncee();
if (oui)
bla;
else
bla;
bla;
bla;
}

J'ai trouvé plusieurs astuces pour récupérer l'appui sur la touche mais je n'arrive pas a m'en servir pour mon cas...

Merci pour votre aide

4 réponses

Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
34
Messages postés
6
Date d'inscription
lundi 30 juillet 2007
Statut
Membre
Dernière intervention
29 janvier 2010

ça marche pas mal mais pas encore comme je voudrai :

on oubli :
la fonction GetKeyState retourne 0 puis on appuis elle retourne 1 puis on ré-appuis elle retourne 0 etc... (il faudrai une touche qui ne remonte pas pour cette fonction )


presque ça :
la fonction GetAsyncKeyState retourne 1 sur la touche qui a été enfoncée puis repasse a 0
mais si on reste appuyé sur la touche c'est comme si on avait pas encore appuyé...
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
34
Tu veux savoir si une touche a été enfoncée mais pas forcement si elle l'est encore ?

private bool pause = false;

protected override void OnKeyDown( KeyEventArgs e )
{
    //base.OnKeyDown( e );
    if ( e.KeyCode == Keys.P )
        pause = true;
}

private void DoSomething( )
{
    // ..

    Application.DoEvents( );
    if ( pause )
    {
        MessageBox.Show( "Pause" );
        pause = false;
    }

    //..
}
Messages postés
6
Date d'inscription
lundi 30 juillet 2007
Statut
Membre
Dernière intervention
29 janvier 2010

Tu veux savoir si une touche a été enfoncée mais pas forcement si elle l'est encore ?


Au contraire je veux savoir si la touche est toujours enfoncée.

Mais c'est une bonne piste que tu m'a donné la, je vais faire comme ça plutôt:

private bool pause = false;

protected override void OnKeyDown( KeyEventArgs e )
{
    pause = true;
}

protected override void OnKeyUp( KeyEventArgs e )
{
    pause = false;
}

private void DoSomething( )
{
    // ..

    Application.DoEvents( );
    if ( pause )
    {
        //..
    }

    //..
}