Problemes avec les keystates

jx53 Messages postés 98 Date d'inscription lundi 17 novembre 2008 Statut Membre Dernière intervention 4 septembre 2012 - 23 août 2011 à 05:44
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 25 août 2011 à 00:46
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

6 réponses

jx53 Messages postés 98 Date d'inscription lundi 17 novembre 2008 Statut Membre Dernière intervention 4 septembre 2012
23 août 2011 à 05:49
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.
0
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 3
23 août 2011 à 10:41
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.
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
23 août 2011 à 12:42
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)
0
jx53 Messages postés 98 Date d'inscription lundi 17 novembre 2008 Statut Membre Dernière intervention 4 septembre 2012
23 août 2011 à 18:24
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jx53 Messages postés 98 Date d'inscription lundi 17 novembre 2008 Statut Membre Dernière intervention 4 septembre 2012
23 août 2011 à 18:27
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.
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
25 août 2011 à 00:46
Tu ouvres l'aide et tu cherches ASCII
0
Rejoignez-nous