ASCII sur une touche

Résolu
todd_anderson
Messages postés
17
Date d'inscription
vendredi 14 avril 2006
Statut
Membre
Dernière intervention
15 juillet 2007
- 13 déc. 2006 à 13:57
jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
- 15 déc. 2006 à 09:24
Voilà, je recherche un moyen de faire dans une boucle un appuis sur 4 touches du clavier, mais aussi coment l'insérer dans un form de base si possible sans modules complémentaire ou truc comme ça...
Je n'ai pas trouvé de code composé de ça (peut-être une mauvaise recherche)...
Voilà, donc un petit exemple de code pour m'aider à insérer ça dans une form...

Merci et désolé de ma question de débutant...

12 réponses

cs_casy
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
13 déc. 2006 à 14:00
Regarde du coté de l'instruction vb SendKey

Petit exemple tiré du MSDN

Dim ReturnValue, I
ReturnValue = Shell("calc.exe", 1)   ' Exécute l'application
Calculatrice.
AppActivate ReturnValue               '
Active l'application Calculatrice.
For I = 1 To 100   ' Configure la boucle de
comptage.
   SendKeys I & "{+}", True   '
Envoie des frappes de touches
   Next I                     ' à l'application
Calculatrice pour
                              '
ajouter chaque valeur de I.
SendKeys "=", True   ' Fait le total
général.
SendKeys "%{F4}", True   ' Envoie la combinaison ALT+F4
pour fermer
                        '
l'application Calculatrice.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
3
jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
13 déc. 2006 à 14:53
1) a valeur renvoyée de Asc(39) est  =  51 et =  à Asc(3), bien évidemment...
    Asc(x) voir aide en ligne) retourne la valeur ascii du premier caratère de la chaine x

2) 39 n'est pas la valeur ascii de la flêche droite mais celle de '

3) les flêches et les touches de fonction n'ont pas de valeur ascii mais des Keycodes

4) un sendkeys de la flêche droite s'écrit Sendkeys "{RIGHT}"

5) un sendkeys de F4 s'écrit Sendkeys "{F4}".
  SendKeys "%{F4}" envoieALT + F4

Tout celà est dans l'aide en ligne, sur le mot sendkeys pour les sendkeys et sur le mot Asc et sur le mot chr
3
cs_casy
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
14 déc. 2006 à 13:33
Option Explicit
Private Declare Sub Sleep Lib "kernel32" (ByVal Temps As Long)
Private Sub Command1_Click()
<strike>i = 0</strike>    <------- Inutile, tu l'initialise ensuite à 1 dans la boucle For
Sleep 5000
For i = 1 To 499 Step 1
Sleep 3500
SendKeys "{RIGHT}", True
i = i + 1  <--------- DANGEREUX, le i+1 est assuré par l'instruction Next i, en fait tu fais une double incrémentation. Si c'est ce que tu veux , utilise plutot à la place Step 2 et supprime cette ligne
Next i
End Sub

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
3
todd_anderson
Messages postés
17
Date d'inscription
vendredi 14 avril 2006
Statut
Membre
Dernière intervention
15 juillet 2007

13 déc. 2006 à 14:23
Merci pour ce petit prog, ça gère en pas longtemps, j'ai déjà trouvé les codes ASCII qui m'intérese je vais tester ça de suite...
0

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

Posez votre question
todd_anderson
Messages postés
17
Date d'inscription
vendredi 14 avril 2006
Statut
Membre
Dernière intervention
15 juillet 2007

13 déc. 2006 à 14:33
Arf, ça m'a fait un truc de bizarre avec ce code, je sais pas si vous comprendrais ce que je veux faire car j'ai quelques problèmes d'expression....

<hr size="2" width="100%" />Dim ReturnValue, I
For I = 1 To 1000   ' Configure la boucle de comptage.
   SendKeys Asc(39), True   ' Envoie des frappes de touches
   I = I + 1
   Next I                     ' à l'application Calculatrice pour
                              ' ajouter chaque valeur de I.
<hr size="2" width="100%" />J'ai mit ça dans un timer, mais bon, ça m'a fait un truc vraiment bizarre...
En clair, je souhaite que ça appuis "tout seul" sur la touche droite... J'avais inséré ça dans un timer, mais j'ai aussi quelques problèmes sur les timers, mais ça j'ai vu ça en cours, donc à moi de trouver...

Mais pour l'ASCII, je n'en sais rien du tout....

Code ASCII:   droite 39
Et pour le SendKeys "%{F4}", quel est celui de la touche droite car ça ne ressemble pas à du ASCII...
0
jrivet
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
59
13 déc. 2006 à 14:49
Salut,

Essaie SendKeys "{RIGHT}"
Attention dans ta boucle tu va envoyer 1000 fois la touche droite (et en plus si c'est dans un timer...) est ce vraiment ce que tu souhaites
@+: Ju£i?n
Pensez: Réponse acceptée
0
todd_anderson
Messages postés
17
Date d'inscription
vendredi 14 avril 2006
Statut
Membre
Dernière intervention
15 juillet 2007

13 déc. 2006 à 15:46
Merci jmfmarques et jrivet, je pense qu'avec ça je vais pouvoir y arriver...

En fait mon but et d'appuyer un nombre i de fois sur la touche "flèche droite", mais une fois par secondes, merci pour la touche d'aillleurs... Donc en keycodes, je pense que ça va pouvoir le faire...
JE regarde mes cours car on s'est servit des timers, mais je ne sais jamais trop où l'insérer... Je test et je vous dis, mais merci beaucoup...
0
cs_MPi
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
20
13 déc. 2006 à 23:39
Dans ta boucle
For i = 1 to 1000
tu mets i = i + 1

Donc ta boucle passera 500 fois

Le For sert à incrémenter le i, donc pas nécessaire de le rajouter.

MPi
0
todd_anderson
Messages postés
17
Date d'inscription
vendredi 14 avril 2006
Statut
Membre
Dernière intervention
15 juillet 2007

14 déc. 2006 à 13:14
Bon, bah nikel, j'ai réussi... Je vous mets le code, il reste encore un peu bugué, mais ça marche pour ce que je voulais...

<hr size="2" width="100%" />Option Explicit
Private Declare Sub Sleep Lib "kernel32" (ByVal Temps As Long)
Private Sub Command1_Click()
i = 0
Sleep 5000
For i = 1 To 499 Step 1
Sleep 3500
SendKeys "{RIGHT}", True
i = i + 1
Next i
End Sub
<hr size="2" width="100%" />
0
jrivet
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
59
14 déc. 2006 à 13:31
[auteurdetail.aspx?ID=747973 re todd_anderson]


Alors n'oublie d'appuyer sur le ou les post qui on pu t'aider dans la résoltuoin de ton problème
Si tu estime qu'aucun n'y a répondu valide le tiens.
@+: Ju£i?n
Pensez: Réponse acceptée
0
todd_anderson
Messages postés
17
Date d'inscription
vendredi 14 avril 2006
Statut
Membre
Dernière intervention
15 juillet 2007

14 déc. 2006 à 18:09
Tu diras ça à mes profs xd Ces boulets nous disent que c'est vitale alors que ouais, je suis d'accord avec toi...
Voilà, donc mon petit programme marche nikel, mais j'arrive pas à le mettre en pause en cliquant, il faut attendre la fin du sleep et cliquer beaucoup de fois, j'ai testé un bouton "exit for" mais j'm'en sors pas, maius ce programme marche nikel pour ce que je veux en faire...
0
jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
15 déc. 2006 à 09:24
Utilise alors une variable globale toto et fais ta boucle de toto à 499 et, dans ta boucle :si toto >499 alors toto 1

et utilise dans ton contrôle timer la fonction Timer pour attendre le temps que tu as décidé d'attendre.
Ainsi : en faisant une pause (timer1.enabled false), tu recommenceras ta boucle à la valeur de toto au prochain timer1.enabled  true.


 


A toi de jouer un peu, maintenant ...
0