Problemes avec les keystates

Signaler
Messages postés
98
Date d'inscription
lundi 17 novembre 2008
Statut
Membre
Dernière intervention
4 septembre 2012
-
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
-
salut, jai ici un code dans un timer qui détecte l'appuis de la touche "x" et qui avec sa change le text d'un label et met a true une variable bool qui sert a faire cliquer la sourie a l'infinie super méga rapidement. cela me servira pour un de mes jeux vidéo, pour tirer super vite avec une arme de poing ( hors sujet mais ces pour faire sur que vous pensez pas a un spamer"

et donc voila, le probleme ces que le texte du labl change a toute les mili seconde car le pc n'attend pas que j,ai appuyé sur la touche pour changer le texte et mettre la variable a true, votre aide serait fortement aprécié.




Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick


If (GetAsyncKeyState(44)) Then

If Started = False Then
Started = True
Label1.Text = "Activé"
Else
Started = False
Label1.Text = "Désactivé"
End If

End If


End Sub

Private Sub Timer3_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer3.Tick
If Started = True Then

Call mouse_event(MOUSEEVENTF_LEFTDOWN + MOUSEEVENTF_ABSOLUTE, 0, 0, 0, 0)
Call mouse_event(MOUSEEVENTF_LEFTUP + MOUSEEVENTF_ABSOLUTE, 0, 0, 0, 0)

End If
End Sub
A voir également:

6 réponses

Messages postés
98
Date d'inscription
lundi 17 novembre 2008
Statut
Membre
Dernière intervention
4 septembre 2012

bon, je trouve pas mon message super clair et je ne peut pas l'éditer, en gros si le code marchais, en jouant je n'aurais qu'a appuyer sur "x" et le bouton gauche de la sourie serait enfoncé et relâché très vite donc un tir très rapide et je n'aurais que ré-appuyer sur "x" pour arrêter sa.

sauf que la sa se met a on et off tout seul extrêmement rapidement donc voila, merci de votre futur aide.
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
Tu devrais supprmier ton timer et mettre le code dans l'événement key_press. Cela rsoudra tes problèmes pour commancé et te ferra un code plus propre.
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Salut

Pour parler technique avec ta solution initiale, commence par présenter ton code avec la coloration syntaxique(3eme icone à droite) = plus facile à relire, surtout avec les enfilades de If
If (GetAsyncKeyState(44)) Then
    If Started = False Then
        Started = True
        Label1.Text = "Activé"
    Else
        Started = False
        Label1.Text = "Désactivé"
    End If
End If 
Attention : Le n° de touche n'est pas le code ASCII, mais le code de touche.
Exemple : 65 = ASCII de "A" est aussi le même code de touche que "a".

Ton code semble correct. Si la condition (GetAsyncKeyState(44)) devient fausse, ton booléen devrait retomber.
Donc, c'est que cette condition ne renvoie pas la bonne info.
Tel que décrit dans l'aide de la fonction dll GetAsyncKeyState, elle renvoie un Short qui vaudra -32767 si la touche est pressée, ou 0 sinon.

Première chose : Déboguer pour le confirmer :
- F9 sur une ligne de code; elle change de couleur
Le programme s'y arrêtera au prochain passage
Survole avec la souris tes variables pour visualiser leur contenu, ou va dans la fenêtre de debogage (Ctrl-G) et tape
? maVariable
pour qu'elle s'inscrive dans la fenêtre.
- F8 (VB6) ou F10 (.Net) pour avancer d'une ligne de code
- F5 pour continuer normalement

Vala
Jack, =fr MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
98
Date d'inscription
lundi 17 novembre 2008
Statut
Membre
Dernière intervention
4 septembre 2012

Bon, si je fait f9 a la ligne "If (GetAsyncKeyState(44)) Then", elle se surligne en jaune et mon programme plante quand je le débug (la fenêtre devine grise et ne répond plu)

sinon et bien j'ai refait le projet au complet et la sa a arrêté de se mettre on et off tout seul sauf que le 44 n'est pas relié a la touche x, jai donc mis 65 comme tu as dit que c'était le code de la touche "a", la je dois peser plusieurs fois sur "a" pour qu'il reste activé.

aussi jaimerais savoir ou trouver la valeur ASCII des touches du clavier pour assigner la touche "x" au lieu de "a", merci de votre temps.
Messages postés
98
Date d'inscription
lundi 17 novembre 2008
Statut
Membre
Dernière intervention
4 septembre 2012

oh désolé, j'aurais due éssailler cela avant de poster mon message mais j'ai réglé mon problème, j'ai augmenté la valeur du tick du timer1 de 1 a 100 et cela fonctionne très bien, manque juste la valeur de la touche "x" :) Je devrais être en mesure de trouver sa sur google donc merci bien a ceux qui on pris le temps de m'aider.
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Tu ouvres l'aide et tu cherches ASCII