Foire aux Questions

Foire aux Questions

Cette section répond à quelques unes des questions les plus fréquemment posées dans le forum. Si vous ne pouvez pas trouver la réponse que vous cherchez ici, alors le forum doit être votre premier point d'appel.

Questions

  1. Comment puis-je exécuter un programme DOS depuis AutoIt ?
  2. Pourquoi ne puis-je utiliser Run() que pour exécuter les fichiers .exe et .com? Qu'en est-il des .msi/.txt et autres ?
  3. Pourquoi est-ce que je reçois des erreurs quand j'essaie d'utiliser les guillemets (") ?
  4. Que signifient les paramètres de fenêtre "title" et "text" ?
  5. Pourquoi ne puis-je afficher une variable en effectuant "Ma variable est $variable" ?
  6. Quand j'utilise Send() pour envoyer une variable, il arrive des choses bizarres ?
  7. Quelle est la différence entre la valeur return et @error ?
  8. Comment sortir d'un script par un raccourci clavier ?
  9. Comment utiliser une icône personnalisée quand je compile mes scripts ?
  10. Comment puis-je être sûr qu'une seule copie de mon script est exécutée ?
  11. Quelles sont les limites techniques actuelles d'AutoIt v3 ?
  12. Je vois un symbole d'image absente dans le fichier d'aide, dans les exemples.

1. Comment puis-je exécuter un programme DOS depuis AutoIt ?

Si vous voulez lancer quelque chose comme une commande DOS "Dir" alors vous devez le faire par l'interpréteur de commandes (command.com ou cmd.exe selon votre OS). La macro @ComSpec contient l'emplacement exact de ce fichier. Vous devriez utiliser la fonction RunWait() qui attend la fin du programme DOS avant de passer à la ligne de script suivante. Voici un exemple d'exécution de la commande DOS sur le disque C: (qui lançe effectivement la commande Command.com /c Dir C:\)

RunWait(@ComSpec & " /c Dir C:\")


Haut de page


2. Pourquoi ne puis-je utiliser Run() que pour exécuter les fichiers .exe et .com ? Qu'en est-il des .msi/.txt et autres ?

Seulement quelques extensions de fichiers sont habituellement "exécutable" - ce sont les .exe, .bat, .com, .pif. Les autres types de fichiers comme .txt et .msi sont actuellement exécutés avec un autre programme. Lorsque vous double-cliquez sur un fichier "MonFichier.msi", c'est la commande "Msiexec.exe MonFichier.msi" qui est exécutée en arrière-plan. Donc pour lancer un fichier .msi à partir d'AutoIt, vous devriez faire :

RunWait("msiexec myfile.msi")


Ou, lancer la commande "Start" qui saura automatiquement comment exécuter le fichier pour vous :

RunWait(@ComSpec & " /c Start myfile.msi")

Ou, utiliser la fonction ShellExecuteWait qui saura automatiquement comment exécuter le fichier pour vous:

ShellExecuteWait("myfile.msi")

Haut de page


3. Pourquoi est-ce que je reçois des erreurs quand j'essaie d'utiliser les guillemets (") ?

Si vous voulez utiliser des guillemets à l'intérieur d'une chaîne, alors vous devez "les doubler". Donc pour chaque guillemet que vous voulez, vous devez en mettre deux. Par exemple, si vous vouliez déclarer une variable avec la chaîne: Un mot dans "cette" phrase est entre guillemets ! Vous devriez faire :

$var = "A word in ""this"" sentence has quotes around it!"

ou utilisez des apostrophes à la place :

$var = 'A word in "this" sentence has quotes around it!'


Haut de page


4. Que signifient les paramètres de fenêtre "title" et "text" ?

Il y a une description détaillée ici.


Haut de page


5. Pourquoi ne puis-je afficher une variable en faisant "Ma variable est $variable"

Si vous avez une variable nommée $msg et que vous voulez l'afficher dans une MsgBox alors cela ne marchera PAS :

#include <MsgBoxConstants.au3>

MsgBox($MB_OK, "Example", "My variable is $msg")

En l'état, cela affichera Ma variable est $msg. Pour y arriver, dire à AutoIt de joindre la chaîne et la variable ensemble en utilisant l'opérateur & operator:

#include <MsgBoxConstants.au3>

MsgBox($MB_OK, "Example", "My variable is " & $msg)


Mode avancé: Si vous avez beaucoup de variables à insérer dans une chaîne, alors vous trouverez utile la fonction StringFormat(). Par exemple, si je voulais insérer $var1 à $var5 dans une chaîne, il serait plus facile de faire:

#include <MsgBoxConstants.au3>

$msg = StringFormat("Var1 is %s, Var2 is %s, Var3 is %s, Var4 is %s", $var1, $var2, $var3, $var4)
MsgBox($MB_OK, "Example", $msg)


Haut de page


6. Quand j'utilise Send() pour envoyer une variable, il arrive des choses bizarres ?

Si vous utilisez Send pour envoyer le contenu d'une variable, attention si il contient des caractères spéciaux comme ! ^ + {SPACE} car il seront considérés comme des raccourcis-clavier spéciaux - Rarement ce que l'on attend. Pour contourner le problème, utilisez le mode RAW de Send() qui ne traduit pas les touches spéciales :

Send($myvar, 1)


Haut de page


7. Quelle est la différence entre la valeur returnée et @error ?

Généralement une valeur de retour est utilisée pour signaler la réussite d'une fonction.  Mais, si une fonction est déjà en train de retourner quelque chose (Comme WinGetText() ) alors nous aurons besoin d'une autre solution pour savoir si la fonction a réussi sa mission, en attribuant une valeur à @error.


Haut de page


8. Comment sortir d'un script par un raccourci clavier ?

Ah, c'est très facile.  Si vous désirez faire stopper un script quand vous pressez une certaine combinaison de touches, alors utilisez la fonction HotKeySet() pour lancer une fonction utilisateur quand la touche désirée est pressée. Cette fonction utilisateur devra juste contenir la commande de sortie Exit.

Voici un code qui interrompra le script quand vous presserez CTRL+ALT+x :

HotKeySet("^!x", "MyExit")
...
...
; Rest of Script
...
...
Func MyExit()
    Exit
EndFunc   ;==>MyExit


Haut de page


9. Comment utiliser une icône personnalisée quand je compile mes scripts ?

Vous devez ouvrir le programme complet de compilation (au lieu de simplement faire un clic droit sur un script et de sélectionner Compile). Cette page décrit le compilateur en détail.


Haut de page


10. Comment puis-je être sûr qu'une seule copie de mon script est exécutée ?

Utilisez la fonction _Singleton(). Voir la documentation des Fonctions (UDF) pour plus de détails sur _Singleton() et comment l'utiliser.


Haut de page


11. Quelles sont les limites techniques actuelles d'AutoIt v3 ?

SVP, consultez la section Limites et Défauts pour les limites techniques de AutoIt3.

Information supplémentaire sur les limites théoriques de AutoIt3.

Valeur Description
Pas de limite Nombre maximum de fenêtres GUI.
Pas de limite Nombre maximum de fonctions en cours d'utilisation.
Pas de limite Nombre maximum de variables en cours d'utilisation à un instant donné.
1.7E308 à 1.7E+308 Précision des nombres (à virgule flottante) de 15 chiffres.
0x8000000000000000 à 0x7FFFFFFFFFFFFFFF Précision des nombres hexadécimaux (entier signé 32-bit/64-bit).

Haut de page


12. Je vois un symbole d'image absente dans le fichier d'aide, dans les exemples.

Ceci devrait être le bouton vous permettant d'ouvrir les exemples dans le fichier d'aide.
Ce problème est dû au fait que le fichier hhctrl.ocx n'est pas correctement enregistré ou corrompu.
Essayez de l'enregistrer en faisant "regsvr32 hhctrl.ocx" à partir de l'invite de commande, ou vérifiez sa validité.


Haut de page