AutoIt Français

Nouveau forum : http://www.autoitscript.fr/
 
AccueilFAQRechercherS'enregistrerMembresGroupesConnexionhttp://www.autoitscript.fr

Partagez | 
 

 Touche de remplacement ~ maintient de SHIFT

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Ctrl-Alt-Suppr
Débutant
Débutant


Nombre de messages : 4
Date d'inscription : 13/07/2007

MessageSujet: Touche de remplacement ~ maintient de SHIFT   2007-07-13, 11:56

Amis des débutants, bonjour.

J'ai commencé à m'intéresser à AutoIt pour me faciliter la vie dans certains jeux vidéos.
Je n'exploite bien entendu pas le 100ième des possibilités de ce logiciel.
J'ai fais ce que j'ai pu, à mon niveau.

Je me suis d'ailleurs permis de renvoyer les lecteurs vers votre forum :
http://www.loki-fr.com/forum/viewtopic.php?p=9524

Ce dont j'ai besoin, c'est qu'une touche en exécute plusieurs automatiquement.
Voici un extrait du script que j'utilise :
[code]#include
$dll = DllOpen("user32.dll")
While 1

If _IsPressed("10", $dll) Then
Send("c")
MouseClick("right")
Sleep(10000)
EndIf

If _IsPressed("20", $dll) Then
Send("o")
Sleep(333)
EndIf

WEnd
DllClose($dll)
[/code]

Pour ce genre de truc très basique, je m'en sors.
Par contre, j'ai un souci. J'aimerai qu'en maintenant SHIFT, le script fasse maintenir SHIFT tout en cliquant à la souris 3 fois par seconde.
En fait, dans le jeu vidéo en question, SHIFT permet de rester sur place et d'attaquer à distance. Le problème c'est qu'avec Sleep, 3 fois par seconde le script fait "relâcher" SHIFT et donc mon perso à tendance à ne pas rester en place.

Dans le même ordre d'idée, SHIFT est utilisé dans les menus du jeu.
Et j'aimerai donc (puisque je rend SHIFT inutilisable) utiliser une touche de remplacement.
Exemple, que CAPSLOCK maintenu corresponde à SHIFT maintenu. (et uniquement SHIFT)


Pourriez-vous m'aider ou me donner quelques pistes à suivre.
D'avance, merci.


[i]PS : je suis paysagiste, pas informaticien ... donc "débutant", merci de ne pas seulement me conseiller d'aller lire l'aide en anglais. :|[/i]
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
VooDoo
Modérateur
Modérateur


Nombre de messages : 161
Date d'inscription : 11/12/2006

MessageSujet: Re: Touche de remplacement ~ maintient de SHIFT   2007-07-15, 13:14

Je ne sais pas ce que sa va donner mais sa peut marcher. j'ai trouver sa dans les commandes Send :
{SHIFTDOWN} Holds the SHIFT key down until {SHIFTUP} is sent


[color=MediumBlue]$timer=TimerInit[/color] [b]([/b] [b])[/b]
[color=Green]while[/color] [i]1[/i]
[color=Green]if[/color] TimerDiff [b]([/b] [color=MediumBlue]$timer[/color] [b])[/b] >2000 [color=Green]then[/color] [b]Exit[/b] [b]send[/b] [b]([/b] "{SHIFTUP}" [b])[/b]
[b]send[/b] [b]([/b] "{SHIFTDOWN}" [b])[/b]
[color=Green]WEnd[/color]

_________________
[img]http://img87.imageshack.us/img87/7941/autoit6oy.jpg[/img]
[url=http://autoit-fr.realbb.net/AutoIt-v3-c2/Entraide-f5/Regles-t39.htm][i]Lisez les règles ou soyez maudit ![/i][/url]
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
sylvanie
Modérateur
Modérateur


Nombre de messages : 300
Date d'inscription : 10/03/2007

MessageSujet: Re: Touche de remplacement ~ maintient de SHIFT   2007-07-15, 19:03

je profite de cette réponse pour porter une petite précision sur ce retours de prog intéressant, car je pense que pas mal de monde peut se faire piéger si on l'oublie (je sais ça m'est arrivé ^^) :

if TimerDiff ( $timer ) >2000 then Exit send ( "{SHIFTUP}" )

Effectivement, il faut toujours penser dans un script où on utilise un appui forcer, à le libérer à la sortie du script, et ceux qq soit sa sortie (même une interruption volontaire), sinon la touche reste enfoncée et ceux même si le script est fini, arf.

petite astuce maison, quand j'utilise ceci, je déclare au début in
autoitsetoption("OnExitFunc","My_Exit")

et dans My_Exit() je fait un send ( "{SHIFTUP}" ) ou/et envoi de ce type (ALT,CTRL ...) , comme ça on est tranquille pour toutes les sorties du script (sauf le kill 9 biensûr ...)

c'est plus pour de ce qui est de la manière générale, que pour la raison même de ce post .
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Ctrl-Alt-Suppr
Débutant
Débutant


Nombre de messages : 4
Date d'inscription : 13/07/2007

MessageSujet: Re: Touche de remplacement ~ maintient de SHIFT   2007-07-21, 03:28

Merci pour vos réponses ...
Malheureusement, ça ne fonctionne pas.

De 1, je suis un peu paumé. J'ai bien compris que :
If _IsPressed("{SHIFTUP}", $dll) Then Send ("{SHIFTDOWN}")
ne fonctionnait pas, et que de toute façon il me fallait utiliser une autre fonction qui gère la continuité puis l'arrêt lors du relâchement.
Mais les langages informatiques, c'est pas ma tasse de thé ...

De 2, j'ai testé la solution proposée.
En fait, dès que je lance le script, mon voyant CAPSLOCK clignote extrèment vite, et en 1 seconde, le script plante et se ferme automatiquement (j'ai même pas le temps de rebasculer dans le jeu voir ce que ça donne ...)

Sylvanie ... Merci pour tes explications.
Mais tu aurais dû (pour les néophytes comme moi) poster 3 scripts : un avec oubli, un avec la mauvaise méthode, et un avec ta sortie globale.


Si qqun d'autre à une idée pour mon problème, je suis ouvert à toute proposition ... [i](virtuelle, bien entendu :roll:)
[/i]D'avance, merci.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
sylvanie
Modérateur
Modérateur


Nombre de messages : 300
Date d'inscription : 10/03/2007

MessageSujet: Re: Touche de remplacement ~ maintient de SHIFT   2007-07-21, 18:48

pour les exples :
fais toi 2 fichiers au3 à l'avance, un avec simplement

[code]Send("{SHIFTDOWN}")[/code]


et l'autre avec :

[code]AutoItSetOption("OnExitFunc","My_Exit")

Send("{SHIFTDOWN}")

Func My_Exit()
Send("{SHIFTUP}")
EndFunc[/code]

lance le premier script et va dans d'autre appli, et tu verra que toutes tes frappes sont faites avec SHIFT d'enfoncé

lance le deuxième, qui se termine pour un shiftup, et là tou rentre dans l'ordre. L'avantage de Onexitfunc est que dans le gros scripts ayant plusieures lignes avec Exit, la fonction My_Exit sera appelée automatiquement
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Ctrl-Alt-Suppr
Débutant
Débutant


Nombre de messages : 4
Date d'inscription : 13/07/2007

MessageSujet: Re: Touche de remplacement ~ maintient de SHIFT   2007-07-23, 14:28

Ok ... mais dans ton exemple, c'est logique.
"appuyer sur SHIFT" ==> évidement, ça implique de "relâcher" à un moment.

Mais dans un schema SI xxxx ALORS yyyyy ça parait évident qu'une fois xxx fini, la commande s'arrête d'elle même. (nan ?)
Donc tu m'excuseras, mais j'ai toujours pas compris.
Parce que si c'est valable pour SHIFT, c'est valable pour toutes les touches... Sauf que pour les autres, dans mon script, il me semble que c'est le Sleep() qui évite la répétition en boucle infinie.
Et dans ce cas, je ne comprends pas pourquoi ça fonctionne avec tout, sauf avec SHIFT.

Désolé si mes explications ne sont pas claires ... mais je patoge encore plus que vous.
D'ailleurs, je me demande même si mon problème ne vient pas d'un conflit SHIFTDOWN / SHIFTUP ... faudra que j'essaye avec une autre touche ... du genre si j'appuie sur R, maintenir SHIFT pendant 2 minutes ...


Si je peux me permettre ...
J'ai vu que certains membres de ce forum postaient des scripts de plusieurs pages. Je trouve curieux qu'avec des gens qui savent faire ça, et un public derrière qui sait apparement apprécier et utiliser ces créations ... il n'y ait personne pour me répondre.

Enfin je sais pas, mais " Si on appuie sur telle touche, alors telle touche est maintenue en continu " ça me parait pas extraordinairement complexe comme requête ...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
sylvanie
Modérateur
Modérateur


Nombre de messages : 300
Date d'inscription : 10/03/2007

MessageSujet: Re: Touche de remplacement ~ maintient de SHIFT   2007-07-23, 22:14

[quote:e66a="Ctrl-Alt-Suppr"]Ok ... mais dans ton exemple, c'est logique.
"appuyer sur SHIFT" ==> évidement, ça implique de "relâcher" à un moment.
[/quote]

concernant le Send("{SHIFTDOWN}") (différent de Send("{SHIFT}")), pour un humain, oui, crampe oblige, pour une machine non, la preuve en est que l'appui perdure au delà de l'execution du script
sans un Send("{SHIFTUP}")

[quote:e66a="Ctrl-Alt-Suppr"]
Mais dans un schema SI xxxx ALORS yyyyy ça parait évident qu'une fois xxx fini, la commande s'arrête d'elle même. (nan ?)
[/quote]
non pas pour tout ce qui est send("{xxxdown}""))

[quote:e66a="Ctrl-Alt-Suppr"]
Donc tu m'excuseras, mais j'ai toujours pas compris.
[/quote]
cf en haut, tu es tout excusé

[quote:e66a="Ctrl-Alt-Suppr"]
Parce que si c'est valable pour SHIFT, c'est valable pour toutes les touches... Sauf que pour les autres, dans mon script, il me semble que c'est le Sleep() qui évite la répétition en boucle infinie.
Et dans ce cas, je ne comprends pas pourquoi ça fonctionne avec tout, sauf avec SHIFT.
[/quote]

Parce que ce n'est pas SHIFT mais SHIFTDOWN, SHIFT implique appui + relâche,
SHIFTDOWN n'implique que l'applui

[quote:e66a="Ctrl-Alt-Suppr"]
Désolé si mes explications ne sont pas claires ... mais je patoge encore plus que vous.
D'ailleurs, je me demande même si mon problème ne vient pas d'un conflit SHIFTDOWN / SHIFTUP ... faudra que j'essaye avec une autre touche ... du genre si j'appuie sur R, maintenir SHIFT pendant 2 minutes ...
[/quote]

Là j'ai pas bien saisi où était le dit conflit peut être lance tu un shiftup trop tôt ?

[quote:e66a="Ctrl-Alt-Suppr"]
Si je peux me permettre ...
J'ai vu que certains membres de ce forum postaient des scripts de plusieurs pages. Je trouve curieux qu'avec des gens qui savent faire ça, et un public derrière qui sait apparement apprécier et utiliser ces créations ... il n'y ait personne pour me répondre.
Enfin je sais pas, mais " Si on appuie sur telle touche, alors telle touche est maintenue en continu " ça me parait pas extraordinairement complexe comme requête ...
:?:[/quote]

Faudrait pas trop jouer les Caliméros quand même.
Je te signale qu'il y a eu des posts avec bien moins de réponses que le tien
et qu'on n'arrive malheureusement pas toujours à trouver une solution à tout.
Surtout que là tu as de quoi bricoler avec ce qu'on a déjà évoquer.
De toute façon, sur les appuis longs, il n'y a que les touches pour lesquelles
ils existent un suffix DOWN et UP. Donc pour SHIFT c'est jouable.
Maintenant si tu as toujours des problèmes, édite le code problématique, explique mot pour mot ce que tu voudrais qu'il fasse et surtout ce qu'il fait.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Ctrl-Alt-Suppr
Débutant
Débutant


Nombre de messages : 4
Date d'inscription : 13/07/2007

MessageSujet: Re: Touche de remplacement ~ maintient de SHIFT   2007-07-30, 23:59

Me revoilà.

J'ai posé une question, en expliquant que j'étais un peu paumé.
Un modérateur m'a répondu (avec un script qui ne fonctionne pas chez moi)
Ensuite, toi, un habitué, tu profites de ce topic pour expliquer qu'il faut penser à "stopper le maintient d'une touche"...

Ce que j'ai simplement voulu dire, c'est que pour un connaisseur, répondre précisement à ma question ne doit pas prendre plus de 2 minutes.
Désolé, je n'ai pas voulu passer pour le caliméro de base ... qui râle alors qu'il n'est qu'un [color=Indigo]" invité qui réclame quelque chose ... "[/color]

________________________________________
Je vais me permettre de reformuler ma question.
Désolé si je parle en langage courant et pas en "langage autoIT ..."

Je me sers de ce logiciel pour me faciliter la vie.
1 touche au clavier = plusieurs touches grâce à AutoIT
Mon souci, c'est que j'ai bidouillé SHIFT pour enchainer plusieurs actions. Ca, ça fonctione !
Le problème c'est que dans mon application, on doit parfois maintenir SHIFT et faire plusieurs clics droits à la souris.

Donc ce que j'ai fais c'est remplacer SHIFT par une autre touche. Pour que ça fonctionne, j'ai utilisé :
[color=Red]If _IsPressed("41", $dll) Then
Send("{SHIFTDOWN}")
Sleep(33333)
EndIf[/color]

Effectivement, se pose le problème du maintient trop long (d'un temps déterminé en fait).
Mais le 2ème problème, c'est que je voulais profiter d'AutoIT pour cliquer à ma place à la souris.
En gros, j'aimerai qqchose de ce genre :

[color=DarkOliveGreen]If _IsPressed("41", $dll) Then
Maintenir shift ...........................................
clic droit // Sleep(33)
Quand je lache la touche "41", lacher shift.......
EndIf[/color]


Et avec vos éléments de réponses ... désolé, mais je n'y arrive pas.
Etant modérateur sur différents forums, je comprends parfaitement que vous ne vouliez pas de kevin qui viennent, se servent, et basta ... mais des gens intéressés, qui font des efforts.
Mais d'un autre côté, vous avez pris la peine de faire un forum fr, traitant d'un langage "simplifié", avec une rubrique intitulée [b]Entraide[/b].
Donc faut quand même envisager la possibilté que des gens comme moi qui pourtant utilisent un ordinateur régulièrement ... ne sont pas forcement armés pour mieux maîtriser d'eux-même ce genre de langage.


A ceux qu'on lu jusqu'ici, merci de votre attention.
Dans l'attente d'une éventuelle aide complémentaire, veuillez trouver ci dessous, de sincères salutations et encouragements virtuels.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Touche de remplacement ~ maintient de SHIFT   Aujourd'hui à 22:45

Revenir en haut Aller en bas
 
Touche de remplacement ~ maintient de SHIFT
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [Résolu] Touche Suppr et OE
» problème touche FN
» Simulation d'appui sur une touche + clic + workback
» Appuis successifs sur la même touche
» création compteur d'appuie de touche pour un genre de guitar hero

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
AutoIt Français :: AutoIt v3 :: Entraide-
Sauter vers: