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

snyx999
Messages postés
6
Date d'inscription
lundi 30 juillet 2007
Statut
Membre
Dernière intervention
29 janvier 2010
- 27 janv. 2010 à 16:15
snyx999
Messages postés
6
Date d'inscription
lundi 30 juillet 2007
Statut
Membre
Dernière intervention
29 janvier 2010
- 29 janv. 2010 à 10:00
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

Lutinore
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Membre
Dernière intervention
27 octobre 2012
42
28 janv. 2010 à 00:54
0
snyx999
Messages postés
6
Date d'inscription
lundi 30 juillet 2007
Statut
Membre
Dernière intervention
29 janvier 2010

28 janv. 2010 à 09:54
ç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é...
0
Lutinore
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Membre
Dernière intervention
27 octobre 2012
42
28 janv. 2010 à 18:07
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;
    }

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

29 janv. 2010 à 10:00
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 )
    {
        //..
    }

    //..
}
0