[R] Détection de touches, sans aucune conséquence

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
jbnh
Niveau 11
Niveau 11
Messages : 1932
Enregistré le : ven. 02 mai 2008 14:54
Localisation : Bruxelles
Status : Hors ligne

[R] Détection de touches, sans aucune conséquence

#1

Message 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
Modifié en dernier par jbnh le dim. 11 mai 2008 13:02, modifié 3 fois.
Balise [..] devant votre requête en cours, [R] quand résolu | Pas de message concernant les bots !

Merci
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11791
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Détection de touches, sans aucune conséquence

#2

Message 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
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
jbnh
Niveau 11
Niveau 11
Messages : 1932
Enregistré le : ven. 02 mai 2008 14:54
Localisation : Bruxelles
Status : Hors ligne

Re: [..] Détection de touches, sans aucune conséquence

#3

Message 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.
Balise [..] devant votre requête en cours, [R] quand résolu | Pas de message concernant les bots !

Merci
genaille08
Niveau 4
Niveau 4
Messages : 93
Enregistré le : sam. 03 mai 2008 01:27
Status : Hors ligne

Re: [..] Détection de touches, sans aucune conséquence

#4

Message 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
Avatar du membre
jbnh
Niveau 11
Niveau 11
Messages : 1932
Enregistré le : ven. 02 mai 2008 14:54
Localisation : Bruxelles
Status : Hors ligne

Re: [..] Détection de touches, sans aucune conséquence

#5

Message par jbnh »

Merci de ta réponse, genaille08...

...seulement voila,

le:

Code : Tout sélectionner

 Send ( "{F2} {é} {F1}" )
envoi aussi des espace, j'ai donc opté pour :

Code : Tout sélectionner

 Send ( "{F2}{é}{F1}" )
Malheureusement il n'execute pas la touche "é"

Ensuite aussi ai-je fait:

Code : Tout sélectionner

Send ("{F2}") 
Send ("{é}")
Send ("{F1}")
Sans réels résultats, car il ne fait que le F2

De plus il le fait a l'infini.

Merci d'avance.
Balise [..] devant votre requête en cours, [R] quand résolu | Pas de message concernant les bots !

Merci
genaille08
Niveau 4
Niveau 4
Messages : 93
Enregistré le : sam. 03 mai 2008 01:27
Status : Hors ligne

Re: [..] Détection de touches, sans aucune conséquence

#6

Message 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 )
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11791
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Détection de touches, sans aucune conséquence

#7

Message 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.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
jbnh
Niveau 11
Niveau 11
Messages : 1932
Enregistré le : ven. 02 mai 2008 14:54
Localisation : Bruxelles
Status : Hors ligne

Re: [..] Détection de touches, sans aucune conséquence

#8

Message 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
Balise [..] devant votre requête en cours, [R] quand résolu | Pas de message concernant les bots !

Merci
genaille08
Niveau 4
Niveau 4
Messages : 93
Enregistré le : sam. 03 mai 2008 01:27
Status : Hors ligne

Re: [..] Détection de touches, sans aucune conséquence

#9

Message par genaille08 »

jbnh a écrit : If $start = 1 Then
je pense que ton erreur vient de la
je ne suis pas sur
tolf
Niveau 7
Niveau 7
Messages : 318
Enregistré le : ven. 15 févr. 2008 12:25
Localisation : Paris
Status : Hors ligne

Re: [..] Détection de touches, sans aucune conséquence

#10

Message par tolf »

Essaye

Code : Tout sélectionner

Send("{ASC 233}")
pour envoyer la lettre "é"
Lisez la documentation d'AutoIt en français (et participez svp :mrgreen:) !

Mes UDF :
[/i][/b]
Avatar du membre
jbnh
Niveau 11
Niveau 11
Messages : 1932
Enregistré le : ven. 02 mai 2008 14:54
Localisation : Bruxelles
Status : Hors ligne

Re: [..] Détection de touches, sans aucune conséquence

#11

Message par jbnh »

genaille => je comprend pas

Tolf,

Code : Tout sélectionner

Send("{ASC 233}")
m'envoi un Ú

Pourtant j'ai vérifé , é est bien 233, pourquoi?
Balise [..] devant votre requête en cours, [R] quand résolu | Pas de message concernant les bots !

Merci
tolf
Niveau 7
Niveau 7
Messages : 318
Enregistré le : ven. 15 févr. 2008 12:25
Localisation : Paris
Status : Hors ligne

Re: [..] Détection de touches, sans aucune conséquence

#12

Message par tolf »

peut-être

Code : Tout sélectionner

Send("{ASC 0xE9}")
marche mieux (avec le code hexadécimal)
Lisez la documentation d'AutoIt en français (et participez svp :mrgreen:) !

Mes UDF :
[/i][/b]
Avatar du membre
jbnh
Niveau 11
Niveau 11
Messages : 1932
Enregistré le : ven. 02 mai 2008 14:54
Localisation : Bruxelles
Status : Hors ligne

Re: [..] Détection de touches, sans aucune conséquence

#13

Message 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:

Code : Tout sélectionner

Send("+{ASC 0xE9}")
Tout grand merci à Tolf, genaille et telm.[/size][/color]
Balise [..] devant votre requête en cours, [R] quand résolu | Pas de message concernant les bots !

Merci
tolf
Niveau 7
Niveau 7
Messages : 318
Enregistré le : ven. 15 févr. 2008 12:25
Localisation : Paris
Status : Hors ligne

Re: [..] Détection de touches, sans aucune conséquence

#14

Message 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
Lisez la documentation d'AutoIt en français (et participez svp :mrgreen:) !

Mes UDF :
[/i][/b]
cortx
Niveau 5
Niveau 5
Messages : 115
Enregistré le : dim. 04 mai 2008 16:10
Status : Hors ligne

Re: [R] Détection de touches, sans aucune conséquence

#15

Message 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
Avatar du membre
jbnh
Niveau 11
Niveau 11
Messages : 1932
Enregistré le : ven. 02 mai 2008 14:54
Localisation : Bruxelles
Status : Hors ligne

Re: [R] Détection de touches, sans aucune conséquence

#16

Message par jbnh »

Normal, c'est un HotKeySet :

Code : Tout sélectionner

HotKeySet("§", "Test")
Balise [..] devant votre requête en cours, [R] quand résolu | Pas de message concernant les bots !

Merci
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

Re: [R] Détection de touches, sans aucune conséquence

#17

Message par ani »

:)

le é est bien défini en 233 mais en caractére

chr(233) renvoi é
Répondre