Tutoriel: Bases AutoHotKey

    Publicités

Users Who Are Viewing This Thread (Total: 0, Members: 0, Guests: 0)

Dragty

V
Mar 21, 2012
1,017
0
942
Hello, je vais vous faire un petit tutoriel pour acquérir les bases du langage AutoHotKey (AHK) fortement inspiré de ce tutoriel (que j'ai suivi pour acquérir mes propres bases ) :
Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!


I.Introduction:​

AHK est un petit langage servant principalement a la création de maccro. Je ne vous apporterez ici que les bases.
Pour compléter vos connaissances je vous invite a vous rendre sur le site officiel. Actuellement je m'en sert assez souvent pour automatiser des téléchargement ou autres. Pour le télécharger je vous invite à allez voir sur le lien ci dessus.


II.Les bases:

Introduction:

Pour créer un script c'est assez simple: une fois que vous avez installer votre AHK, lancez le si c'est la première fois ce qui vous lancera votre éditeur de texte ( soit le Bloc Note ou le NotePadd++ ou autres ). C'est la dedans que vous entrerez vos lignes de codes.
Si vous l'avez déjà lancez une fois, vous n'aurez qu'à effectuer un clic droit sur votre bureau et cliquer sur "Nouveau" puis "AutohotKey Script".
Pour lancer un script à l'aide d'une touche il suffira d’écrire la touche suivit de deux point (x2). Si vous voulez que s'active sous la pression de plusieurs touche mettez un "&" entre chaque touche:

a::
²::
a&5::
é&m



Lancez un logiciel ou autre:

Admettons que vous vouliez lancer skype. Vous allez alors vous servir de la commande "Run".
Si il se trouve sur votre bureau, vous écrirez simplement Run suivit d'une virgule puis de Skype, sinon vous entrerez le chemin d'accès de skype.
Pour résumer vous avez deux choix:

Run, Skype
Run, C:\MonChemin\Skype

Si vous voulez attendre que l'utilisateur ferme sa fenêtre avant de continuer le script, servez vous de la commande "RunWait":

RunWait, Skype
SuiteDeMonScript



Les fenêtres:

Pour mettre une fenêtre au premier plan utilisez la commande "WinActivate":

Run, Skype
WinActivate, Skype

Dans ce cas, on lance Skype puis on le met au premier plan, cependant en le lançant il sera déjà au premier plan.

Pour savoir si une fenêtre, un document ou autre est lancé utilisez la commande "IfWinExist":

IfWinExist, Skype

{
WinActivate
}

Else

{
Run, Skype
WinWait, Skype
WinActivate, Skype
}

Dans l'exemple ci dessus, on vérifie d'abord si la fenêtre Skype existe. Si elle existe, on la met au premier plan, sinon (via le else), on lance skype, on attend que la fenetre soit lancer (WinWait) puis on la met au premier plan.

Pour fermer une fenêtre on utilisera la commande "WinClose"
Pour bouger ou redimensionner une fenêtre on utilisera "WinMove":

WinMove, X, Y
WinMove, WinTitre, ?, X, Y [, Largeur, longueur,?,?]

La ou il y a des points d’interrogations c'est que je ne sais pas a quoi correspondent les variables (et je ne m'en sert jamais, pour plus de détail rendez vous sur le site)
Dans le premier cas on déplace simplement la fenêtre aux axes X et Y indiqué. Dans le deuxième cas on indique d'abord le titre de la fenêtre, ensuite je ne sais pas, puis les axes X et Y, la largeur de la fenêtre, la longueur et enfin je ne sais pas pour les deux dernier.
Si comme moi vous ne savez pas ou tout simplement que vous n'avez pas besoin de remplir les variables, laissez simplement le champs vide.

WinMove, Skype,, 0, 0 [, 1600, 1200,,]

Dans ce cas on déplace la fenêtre skype en haut a gauche de votre écran avec les dimensions 1600 en largeur et 1200 en longueur, ce qui correspond a un FullScreen pour moi.

Pour savoir ou vous êtes sur votre écran et donc savoir quel coordonnés indiqué lancez Au3Spy qui est compris avec le téléchargement de AHK.

Vous avez ensuite les commande WinMinimize, WinMaximize et WinRestore, pour diminuer, agrandir ou restaurer la fenêtre.



Envoyer des codes de touches et des clics de souris:

On utilisera la commande "Send" pour envoyer des codes de touches a la fenêtre active de windows d'où l'importance du chapitre B:

Send, Hey!
Send, {Enter}

Pour déplacer votre curseur utilisez la commande "MouseMove" en indiuant d'abord l'axe X puis Y
Pour les cliques de souris on utilisera la commande "MouseClick" en indiquant d'abord quel clique (Left ou Right), puis l'axe X et Y:

MouseMove, 150, 180
MouseClick, Left
MouseClick, left, 150, 180


Fenêtres de texte et variables:

Pour afficher du texte dans une fenêtre on va utiliser la commande "MsgBox":

MsgBox, Hello world

Nous allons ici aborder une notion importante: Les Variables.
Les Variables sont des "boites" où sont stocker des valeurs. Par exemple on va stocker une phrase ou un nombre. On pourra l'utiliser plus tard.
On va par exemple s'en servir avec la commande "InputBox".
Cette commande sert donc a afficher un texte dans la même fenêtre que le "MsgBox" sauf qu'en plus on demandera à l'utilisateur de saisir un texte.
On indique d'abord le nom de la variable dans laquelle sera stocker le texte saisi par l'utilisateur, le titre de la fenêtre puis le texte qui sera afficher dans la fenêtre:

InputBox, MaVar, MonTitre, Combien font 6x7?
Vous avez répondu %MaVar%


Fonction boucle et condition:


On va ici approfondir la notion de variable.
On va utiliser la commande "If" pour vérifier si condition est respecté et fera donc avancée le script en fonction:

InputBox, MaVar, Exemple2, Ecrivez 1 si vous êtes pour et 2 si vous êtes contre.

If MaVar=1
{
MsgBox, Vous êtes pour !
}
Return

If MaVar=2
{
MsgBox, Vous êtes contre !
}

Pour créer une boucle, c'est à dire une action qui s'effectuera le nombre de fois désiré, on utilisera la fonction "Loop" suivi du nombre de fois ou l'action doit être effectuée. Laissez le champ vide pour effectuer l'action a l'infinie:

Loop, 5
{
Run, cmd
}

Ici on ouvrira 5 invite de commande.
La commande "Sleep", permet de faire une pause dans le script (1000ms correspondent a 1s).
Pour casser une boucle infinie on servira de la fonction "break" et des variables:

a::
n=1


If n = 1

Loop,
{
Send, z
Sleep, 100

If n = 0
break
}
Return


*e::
n = 0

La petite étoile (*) devant le e:: sert exécuter l'action même si une autre est déjà en train de se dérouler. Si on ne la met pas il faudra spammer le e jusqu'à temps que l'ont tombe sur l'intervalle 100ms du Sleep.



III.Conclusion:

Voilà c'est ce qui correspond, pour moi, aux bases. Comme dit précédemment je me suis inspiré de Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!. J'y ai donc ajouté et retiré des fonctions et autres en fonction de ce qui me semblait vraiment principale.
Si vous cherchez d'autres fonction rendez vous également sur le site, qui est par contre principalement en anglais (comme le forum).

Si certaines choses ne sont pas très claire que j'ai commis une énorme fautes ou que vous avez des remarques n'hésitez pas à m'en faire part! Je ne suis néanmoins pas un pro dans ce langage et ne pourrait donc pas forcément vous aider.​
 

lLeedl

Membre
Apr 10, 2015
27
0
567
34
Cherche quelq'un pour m'aider je veux crée un mini Bot je mi connait pas du tout mais j'éssaye de m'ens sortir alors tout d'abord je veut qu'il ce lance quand cliquand sur le bouton de la molette ensuite quand la macro ce lance je veux qu'il reste apuiyer sur clic droit pendant toute les autre combinaison de touche quelq'un pourait m'aider ?

J'ai mi ( MButton:: ) Pour qu'il ce lance avec le bouton de la molette et (Send,MouseClick, Right) pour le click droit je sais pas comment faire pour qu'il reste apuiyer sur le bouton click droit pendant que les autre bouton s'active ensuite j'aimerais de l'aide c'est un petit bot que je voudrais faire s'il vout plait merci