[V] Attendre la pression d'une touche

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Verrouillé
azerty2699
Niveau 3
Niveau 3
Messages : 47
Enregistré le : mer. 07 janv. 2015 18:58
Status : Hors ligne

[V] Attendre la pression d'une touche

#1

Message par azerty2699 »

Bonjour,

J'aimerais faire un programme qui, a la pression de la touche "a", envoie "a" et écrive "a" dans un fichier. Voici mon code :

Code : Tout sélectionner

HotKeySet("a", send_it)

Func send_it()
    Send("a")
    FileWrite("send_keys", "a")
EndFunc   ;==>sendit
 
Le problème est que, lorsque j'exécute le programme, ca se termine onstantannément... normal.
Mais comment faire pour que le programme attende la pression d'une touche ? J'ai essayé de mettre une boucle while infinie autout du HotkeySet mais ca ne fonctionne pas.

Merci de votre aide !
Avatar du membre
sozary
Niveau 6
Niveau 6
Messages : 274
Enregistré le : lun. 20 janv. 2014 19:17
Status : Hors ligne

Re: [...]Attendre la pression d'une touche

#2

Message par sozary »

Hum... Toi tu écris dans un fichier SANS ouvrir un fichier, t'es balèze dis moi :D !

Ensuite le " Send("a")" permet d'écrire la lettre a, simuler l'appui de la touche a, or appui sur la lettre a la, dans le vide, sa sert à rien.

Enfin ton programme ne fait ici strictement rien vu qu'il sait qu'il y a un raccourcis clavier et une fonction, puis c'est fini, il faut mettre une boucle, comme tu l'as dis, mais de la bonne façon, pas "autour du HotKeySet".

Pour écrire dans un fichier que tu as appuyé sur a QUAND tu appuis sur 'a' (je garde ta technique du HotKeySet()), sa donne:

Code : Tout sélectionner

HotKeySet("a", "send_it")

While 1
    Sleep(10)
WEnd

Func send_it()
    $file=FileOpen("test.txt",2)
    FileWrite($file, 'La touche "a" a été appuyé!')
    FileClose($file)
    Exit
EndFunc   ;==>sendit
"Là où la volonté est grande, les difficultés diminuent.", Niccolò Machiavelli
azerty2699
Niveau 3
Niveau 3
Messages : 47
Enregistré le : mer. 07 janv. 2015 18:58
Status : Hors ligne

Re: [...]Attendre la pression d'une touche

#3

Message par azerty2699 »

Merci ca fonctionne, mais j'aimerais que une fois la touche "a" appuyée, le programme ne s'arrête pas, de facon à ce que si je rappuie sur cette touche la ligne se réecrive... Une idée ? Merci !
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [...]Attendre la pression d'une touche

#4

Message par orax »

Code : Tout sélectionner

FileWrite("send_keys", "a")
Sans FileOpen ça marche aussi ^^ :mrgreen:
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
sozary
Niveau 6
Niveau 6
Messages : 274
Enregistré le : lun. 20 janv. 2014 19:17
Status : Hors ligne

Re: [...] Attendre la pression d'une touche

#5

Message par sozary »

Dans ce cas il faut prévoir une touche qui sort de la boucle et du programme, ici j'ai choisis Escape:

Code : Tout sélectionner

HotKeySet("a", "send_it")
HotKeySet("{ESC}", "_exit")

While 1
    Sleep(10)
WEnd

Func send_it()
    FileWrite("test.txt", 'La touche "a" a été appuyé!'&@CRLF)
EndFunc   ;==>sendit

Func _exit()
    Exit
EndFunc   ;==>_exit
"Là où la volonté est grande, les difficultés diminuent.", Niccolò Machiavelli
azerty2699
Niveau 3
Niveau 3
Messages : 47
Enregistré le : mer. 07 janv. 2015 18:58
Status : Hors ligne

Re: [...] Attendre la pression d'une touche

#6

Message par azerty2699 »

Merci. Cepandant J'ai un dernier souhait : comment choisir l'emplacement du fichier ?

J'ai essayé ceci :

Code : Tout sélectionner

FileWrite("C\users\test\Desktop\test.txt", 'La touche "a" a été appuyé!'&@CRLF)
mais ca ne fonctionne pas...
Avatar du membre
sozary
Niveau 6
Niveau 6
Messages : 274
Enregistré le : lun. 20 janv. 2014 19:17
Status : Hors ligne

Re: [...] Attendre la pression d'une touche

#7

Message par sozary »

Voilou:

Code : Tout sélectionner

HotKeySet("a", "send_it")
HotKeySet("{ESC}", "_exit")

While 1
    Sleep(10)
WEnd

Func send_it()
    FileWrite("C:\Users\"&@UserName&"\Desktop\test.txt", 'La touche "a" a été appuyé!'&@CRLF)
EndFunc   ;==>sendit

Func _exit()
    Exit
EndFunc   ;==>_exit
ton "user" n'est peut être pas le nom de ton pc!
"Là où la volonté est grande, les difficultés diminuent.", Niccolò Machiavelli
azerty2699
Niveau 3
Niveau 3
Messages : 47
Enregistré le : mer. 07 janv. 2015 18:58
Status : Hors ligne

Re: [...] Attendre la pression d'une touche

#8

Message par azerty2699 »

Merci, ça fonctionne !

Mais je ne comprends pourquoi si je rajoute un send dans la fonction senit, ainsi :

Code : Tout sélectionner

HotKeySet("a", "send_it")
HotKeySet("{ESC}", "_exit")

While 1
    Sleep(10)
WEnd

Func send_it()
    DirCreate("C:\Users\" & @UserName & "\AppData\Local\AutoIt v3\perso_data")
    FileWrite("C:\Users\" & @UserName & "\AppData\Local\AutoIt v3\perso_data\test.txt", 'La touche "a" a été appuyé!' & @CRLF)
    Send("a")
EndFunc   ;==>send_it

Func _exit()
    Exit
EndFunc   ;==>_exit

 
, ça ne fontionne pas...


En fait mon but est que, en plus d'envoyer "La touche "a" a été appuyé!" dans un fichier, ça envoie "a", puisqu'on appuie dessus.
Là, quand on appuie sur "a", par exemple dans la barre demarrer windows, rien ne s'affiche...
Avatar du membre
sozary
Niveau 6
Niveau 6
Messages : 274
Enregistré le : lun. 20 janv. 2014 19:17
Status : Hors ligne

Re: [...] Attendre la pression d'une touche

#9

Message par sozary »

Simple question: à quoi va te servir un tel programme :mrgreen: ?
"Là où la volonté est grande, les difficultés diminuent.", Niccolò Machiavelli
azerty2699
Niveau 3
Niveau 3
Messages : 47
Enregistré le : mer. 07 janv. 2015 18:58
Status : Hors ligne

Re: [...] Attendre la pression d'une touche

#10

Message par azerty2699 »

En fait je voudrais faire un programme qui enregistre les lettres appuyées, sans perturber la pression de ces lettres, c'est à dire qu'il faut aussi que la lettre en question apparaisse dans le champ de selection.

Peux-tu m'aider stp ?
Avatar du membre
sozary
Niveau 6
Niveau 6
Messages : 274
Enregistré le : lun. 20 janv. 2014 19:17
Status : Hors ligne

Re: [...] Attendre la pression d'une touche

#11

Message par sozary »

Oui ,c'est un Keylogger, je ne crois pas que se soit autorisé sur le forum..
"Là où la volonté est grande, les difficultés diminuent.", Niccolò Machiavelli
azerty2699
Niveau 3
Niveau 3
Messages : 47
Enregistré le : mer. 07 janv. 2015 18:58
Status : Hors ligne

Re: [...] Attendre la pression d'une touche

#12

Message par azerty2699 »

Mais qu'est ce que tu crois, que je suis un pirate ou je ne sais quoi ?? C'est pour un jeu sur pc, j'aimerais compter le nombre de fois que j'entre certains codes, c'est tout...
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [...] Attendre la pression d'une touche

#13

Message par mikell »

Un tel programme est effectivement un keylogger
Qu'il soit fait dans un but honnête n'est pas le problème, c'est juste que dans la mesure où le code est susceptible d'être utilisé à des fins malhonnêtes, le sujet n'est tout simplement pas autorisé
Désolé
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Verrouillé