Page 1 sur 1
[R] Détection de touches, sans aucune conséquence
Posté : sam. 10 mai 2008 11:16
par jbnh
Bonjour à tous,
j'aimerais trouver, si possible, comment un script peut-il détecter une touche, et si il la détecte, executer une scéance quelconque. Par exemple si j'appuie sur une touche (prenons pour exemple la touche "e"), cette touche "e" n'a pas d'effet, mais ça entraine la touche "a" puis "e"
en gros
Code : Tout sélectionner
if "on detecte la touche e" then ;elle n'a pas d'effet
Send("{a}")
Send("{e}")
else
sleep(100)
EndIf
Merci d'avance
Re: [..] Détection de touches, sans aucune conséquence
Posté : sam. 10 mai 2008 11:56
par Tlem
Pour commencer :
http://autoitscript.fr/forum/viewtopic.php?f=20&t=595
Puis :
Le sujet à été traiter de nombreuses fois, donc merci de faire un minimum de recherches.
Voir :
HotKeySet
Re: [..] Détection de touches, sans aucune conséquence
Posté : sam. 10 mai 2008 19:33
par jbnh
Rebonjour,
Désolé Tlem pour ne pas m'être plié aux règles du forum mais j'ai fait mon post en speed ce matin car je n'avais pas trop le temps
Voilà à quoi je suis arrivé apres quelques recherches:
Code : Tout sélectionner
Global $start
HotKeySet("é", "Test")
HotKeySet("{ESC}", "MyExit")
While 1
If $start Then
Send("{F2}")
Send("{é}")
Send("{F1}")
EndIf
Sleep(20)
WEnd
Func Test()
$start = 1
EndFunc
Func MyExit()
Exit
EndFunc
Les problèmes, 1) il execute la boucle à l'infini alors que j'aimerais qu'il ne le fasse qu'une fois
2) il n'exécute pas le "é"
Merci d'avance.
Re: [..] Détection de touches, sans aucune conséquence
Posté : sam. 10 mai 2008 19:56
par genaille08
salut
alors je vais essayer de t'aider
alors apparemment tu cherche a ce que tu appui sur "é" donc "2", le script lui fasse "F1", "é", "F2"
donc pour cela tu fais
Code : Tout sélectionner
HotKeySet ( "é", "é" ) ; detection de l'appui de la touche é
Func é()
Send ( "{F2} {é} {F1}" ) ; appui sur F2, é, F1
EndFunc
While 1
sleep (100)
WEnd ; pour que le script ne se finisse jammais ( toujours a la fin )
par contre pour "myexit" c'est bon
je pense que tu n'a pas besoin de ta fonction "globale"
si ce n'était pas ta question merci de me détailler plus tes attentes
Re: [..] Détection de touches, sans aucune conséquence
Posté : sam. 10 mai 2008 20:23
par jbnh
Merci de ta réponse, genaille08...
...seulement voila,
le:
envoi aussi des espace, j'ai donc opté pour :
Malheureusement il n'execute pas la touche "é"
Ensuite aussi ai-je fait:
Sans réels résultats, car il ne fait que le F2
De plus il le fait a l'infini.
Merci d'avance.
Re: [..] Détection de touches, sans aucune conséquence
Posté : sam. 10 mai 2008 20:40
par genaille08
oui il faut que tu prenne une touche autre que F1 or je ne sais pas si pour ton application tu peux le faire
Code : Tout sélectionner
AutoItSetOption ( "SendKeyDownDelay" , 10 ) ; qui va faire que l'appui des touche va etre plus long ( modifie 10 a ta guise
HotKeySet ( "{é}", "fonction" ) ; detection de l'appui de la touche é
Func fonction()
send ( "{f2}" )
Send ( "é" )
Send ( "{f1}" )
EndFunc
While 1
sleep (100)
WEnd ; pour que le script ne se finisse jammais ( toujours a la fin )
Re: [..] Détection de touches, sans aucune conséquence
Posté : sam. 10 mai 2008 21:40
par Tlem
@jbnh Juste pour l'explication de pourquoi votre code boucle indéfiniment :
Dans la fonction Test(), vous dites que $start = 1.
Et dans la boucle principale, vous tester la condition de $start.
Comme $start=1 il fait donc la boucle If indéfiniment ...
Si vous vouliez exécuter le code une seule fois, alors avant de sortir de la boucle If, initialisez $start à 0.
Re: [..] Détection de touches, sans aucune conséquence
Posté : dim. 11 mai 2008 07:58
par jbnh
Bonjour à tous,
Voilà, en suivant vos conseils, à quoi je suis arrivé:
Code : Tout sélectionner
Global $start
AutoItSetOption ( "SendKeyDownDelay" , 10 )
HotKeySet("§", "Test")
HotKeySet("{ESC}", "MyExit")
While 1
If $start Then
Send("{F2}")
Send("{§}")
Send("{F1}")
$start = 0
EndIf
Sleep(20)
WEnd
Func Test()
$start = 1
EndFunc
Func MyExit()
Exit
EndFunc
Le problème de la boucle infinie est résolu mais il ne fait pas toute la séquence, comme d'habitude, il fait que le f2.
Pourquoi? Je ne sais pas quoi faire.
Merci d'avance
Re: [..] Détection de touches, sans aucune conséquence
Posté : dim. 11 mai 2008 12:04
par genaille08
jbnh a écrit :
If $start = 1 Then
je pense que ton erreur vient de la
je ne suis pas sur
Re: [..] Détection de touches, sans aucune conséquence
Posté : dim. 11 mai 2008 12:29
par tolf
Essaye
pour envoyer la lettre "é"
Re: [..] Détection de touches, sans aucune conséquence
Posté : dim. 11 mai 2008 12:38
par jbnh
genaille => je comprend pas
Tolf,
m'envoi un Ú
Pourtant j'ai vérifé , é est bien 233, pourquoi?
Re: [..] Détection de touches, sans aucune conséquence
Posté : dim. 11 mai 2008 12:41
par tolf
peut-être
marche mieux (avec le code hexadécimal)
Re: [..] Détection de touches, sans aucune conséquence
Posté : dim. 11 mai 2008 12:52
par jbnh
Waw, ca à l'air de marcher aurais tu aussi le code hexadécimal pour le "2"? Ou alors, où puis je le trouver.
Merci encore.
Edit: Tout simplement:
Tout grand merci à Tolf, genaille et telm.[/size][/color]
Re: [..] Détection de touches, sans aucune conséquence
Posté : dim. 11 mai 2008 13:03
par tolf
jbnh a écrit :aurais tu aussi le code hexadécimal pour le "2"? Ou alors, où puis je le trouver
Il se trouve dans l'aide d'AutoIt :
ici
Re: [R] Détection de touches, sans aucune conséquence
Posté : mar. 27 mai 2008 12:43
par cortx
Bonjour,
le fait d'appuyer sur é pour déclencher le scirpt, ne provoque pas l'écriture normal de la touche ?
Ca me parait surprennant tout de meme
Re: [R] Détection de touches, sans aucune conséquence
Posté : mar. 27 mai 2008 19:05
par jbnh
Normal, c'est un HotKeySet :
Re: [R] Détection de touches, sans aucune conséquence
Posté : ven. 20 juin 2008 21:08
par ani
le é est bien défini en 233 mais en caractére
chr(233) renvoi é