-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathFAQ.htm
352 lines (337 loc) · 40.3 KB
/
FAQ.htm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
<!DOCTYPE HTML>
<html lang="fr">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Foire Aux Questions (FAQ) | AutoHotkey</title>
<meta name="description" content="Cette page liste des questions et réponses à propos de la syntaxe du langage, de dépannage général, de tâches courantes, et des hotkeys, hotstrings et réassignement de touches." />
<link href="static/theme.css" rel="stylesheet" type="text/css" />
<script src="static/content.js" type="text/javascript"></script>
</head>
<body>
<h1>Foire Aux Questions (FAQ)</h1>
<h2 id="toc">Table des Matières</h2>
<p><strong><a href="#language-syntax">Syntaxe du Langage</a></strong></p>
<ul>
<li><a href="#quotes">Quand utiliser les guillemets avec les commandes et leurs paramètres ?</a></li>
<li><a href="#percent">Quand exactement utiliser les signes pourcentage autour d'un nom de variable ?</a></li>
<li><a href="#esc">Quand échapper les signes pourcentage et les virgules ?</a></li>
</ul>
<p><strong><a href="#general-troubleshooting">Dépannage Général</a></strong></p>
<ul>
<li><a href="#install">Que faire si AutoHotkey ne s'installe pas ?</a></li>
<li><a href="#rightclick">Comment restaurer les options du menu contextuel du clic droit pour les fichiers .ahk ?</a></li>
<li><a href="#autoexec">Pourquoi certaines lignes de mon script ne s'exécutent-elles jamais ?</a></li>
<li><a href="#vista">Pourquoi mon script ne marche-t-il pas sur Windows <em>xxx</em> alors qu'il marchait sur une version précédente ?</a></li>
<li><a href="#uac">Comment contourner les problèmes engendrés par le contrôle du compte d'utilisateur (UAC) ?</a></li>
<li><a href="#DefaultScript">Je ne peux pas modifier mon script en passant par l'icône de la zone de notifications car une erreur empêche mon script de se lancer. Que faire ?</a></li>
<li><a href="#Debug">Comment trouver et corriger les erreurs dans mon code ?</a></li>
<li><a href="#run">Pourquoi la commande Run échoue-t-elle à lancer un jeu ou un programme ?</a></li>
<li><a href="#nonascii">Pourquoi les caractères hors ASCII de mon script sont-ils affichés ou envoyés incorrectement ?</a></li>
<li><a href="#games">Pourquoi les Hotstrings, Send, et Click n'ont aucun effet dans certains jeux ?</a></li>
<li><a href="#perf">Comment améliorer les performances pour des jeux ou autre quand le processeur est très demandé ?</a></li>
<li><a href="#Virus">Mon programme antivirus a détecté AutoHotkey ou un script compilé comme logiciel malveillant. Est-ce vraiment un virus ?</a></li>
</ul>
<p><strong><a href="#common-tasks">Tâches Courantes</a></strong></p>
<ul>
<li><a href="#Download">Où trouver la compilation officielle, ou des versions plus anciennes ?</a></li>
<li><a href="#USB">Puis-je lancer AutoHotkey depuis un périphérique USB ?</a></li>
<li><a href="#output">Comment récupérer la sortie d'une opération en ligne de commande ?</a></li>
<li><a href="#close">Comment un script peut-il fermer, mettre en pause, suspendre ou recharger d'autres scripts ?</a></li>
<li><a href="#repeat">Comment arrêter une action répétée sans quitter le script ?</a></li>
<li><a href="#help">Comment utiliser de l'aide sensible au contexte pour les commandes AutoHotkey dans un éditeur quelconque ?</a></li>
<li><a href="#load">Comment détecter quand une page web a fini de charger ?</a></li>
<li><a href="#time">Comment comparer ou manipuler les dates et le temps ?</a></li>
<li><a href="#SendDate">Comment puis-je envoyer la date et/ou l'instant actuels ?</a></li>
<li><a href="#ControlSend">Comment puis-je envoyer du texte à une fenêtre qui n'est pas active ou pas visible ?</a></li>
<li><a href="#winamp">Comment contrôler Winamp même sans qu'il soit actif ?</a></li>
<li><a href="#msgbox">Comment changer le texte des boutons de MsgBox ?</a></li>
<li><a href="#DefaultEditor">Comment changer l'éditeur par défaut, qui est accessible via le menu contextuel ou l'icône de la zone de notifications ?</a></li>
<li><a href="#GuiSubmit">Comment enregistrer le contenu de mes variables associées à une GUI ?</a></li>
<li><a href="#GDIPlus">Puis-je dessiner avec AutoHotkey ?</a></li>
<li><a href="#WinWaitAction">Comment puis-je démarrer une action quand une fenêtre apparaît, se ferme ou devient (in)active ?</a></li>
</ul>
<p><strong><a href="#hotkeys-hotstrings-and-remapping">Hotkeys, Hotstrings, et Réaffectation de Touches</a></strong></p>
<ul>
<li><a href="#Startup">Comment faire pour que mes hotkeys et hotstrings soient activés dès le démarrage de mon ordinateur ?</a></li>
<li><a href="#HotMouse">J'ai du mal à faire fonctionner mes boutons de souris comme hotkeys. Des conseils ?</a></li>
<li><a href="#HotSymb">Comment définir des hotkeys avec la tabulation ou la barre espace ?</a></li>
<li><a href="#Remap">Comment réaffecter des touches ou des boutons de la souris afin qu'elles deviennent des touches différentes ?</a></li>
<li><a href="#DoublePress">Comment détecter un double appui d'une touche ou d'un bouton ?</a></li>
<li><a href="#HotContext">Comment rendre une hotkey ou un hotstring exclusif à certains programmes ? Autrement dit, je veux qu'une certaine touche agisse normalement sauf quand une certaine fenêtre est active.</a></li>
<li><a href="#HotPrefix">Comment une touche préfixe peut-elle garder sa fonction native au lieu de ne rien faire ?</a></li>
<li><a href="#HotOverride">Comment changer ou désactiver les touches de raccourcis Windows intégrées, comme Win+U (options d'affichage) et Win+R (Exécuter) ?</a></li>
<li><a href="#HotRegex">Puis-je utiliser des caractères joker (wildcards) ou des expressions régulières dans des Hotstrings ?</a></li>
<li><a href="#SpecialKey">Comment puis-je utiliser une hotkey qui n'est pas dans ma disposition clavier ?</a></li>
<li><a href="#HotZero">Mon clavier numérique a une touche spéciale 000. Est-il possible de l'utiliser pour une hotkey ?</a></li>
</ul>
<h2 id="language-syntax">Syntaxe du Langage</h2>
<h3 id="quotes">Quand utiliser les guillemets avec les commandes et leurs paramètres ?</h3>
<p>Les guillemets (") ont un sens particulier seulement dans les <a href="Variables.htm#Expressions">expressions</a>. Partout ailleurs, ils sont traités littéralement comme s'ils étaient un caractère normal. Toutefois, quand un script lance un programme ou un document, le système d'exploitation a souvent besoin des guillemets autour de tout paramètre de ligne de commande qui contient des espaces, comme dans cet exemple : <code>Run, Notepad.exe "C:\Mes Documents\Liste Adresses.txt"</code>.</p>
<h3 id="percent">Quand exactement utiliser les signes pourcentage autour d'un nom de variable ?</h3>
<p>Les noms de variables sont toujours entourés de signes pourcentage sauf dans les cas illustrés en <strong>gras</strong> ci-dessous :</p>
<ul>
<li>Dans les paramètres qui sont des variables d'entrée ou de sortie : <code><a href="lib/StringLen.htm">StringLen</a>, <strong>VarSortie</strong>, <strong>VarEntree</strong></code></li>
<li>Du côté gauche d'une affectation : <code><strong>Var</strong> = 123abc</code></li>
<li>Du côté gauche d'une <a href="lib/IfEqual.htm">instruction if traditionnelle (non-expression)</a> : <code>If <strong>Var1</strong> < %Var2%</code></li>
<li>Partout dans les <a href="Variables.htm#Expressions">expressions</a>. Par exemple :
<pre>If (<strong>Var1</strong> <> <strong>Var2</strong>)
<strong>Var1 <a href="lib/SetExpression.htm">:=</a> Var2</strong> + 100</pre></li>
</ul>
<p>Pour des explications plus poussées de comment utiliser les signes pourcentage, voir <a href="Language.htm#legacy-syntax">Syntaxe Dépassée</a> et <a href="Language.htm#dynamic-variables">Variables Dynamiques</a>. Les signes pourcentage peuvent aussi avoir d'autres interprétations :</p>
<ul>
<li>Le <a href="Language.htm#-expression">préfixe pourcent-espace</a> permet d'interpréter un paramètre comme une expression.</li>
<li>Les signes pourcentage <a href="misc/EscapeChar.htm">échappés</a> (<code>`%</code>) et ceux dans les <a href="Language.htm#strings">chaînes de caractères littérales entre guillemets</a> n'ont pas de sens particulier (ils sont interprétés littéralement comme des signes pourcentage).</li>
</ul>
<h3 id="esc">Quand <a href="misc/EscapeChar.htm">échapper</a> les signes pourcentage et les virgules ?</h3>
<p>Les signes pourcentage littéraux doivent être <a href="misc/EscapeChar.htm">échappés</a> en les précédant d'un accent grave ou backtick. Par exemple : <code>MsgBox Le pourcentage actuel est 25`%.</code> Les virgules littérales doivent aussi être échappées (<code>`,</code>) sauf si elles sont utilisées dans une <a href="lib/MsgBox.htm">MsgBox</a> ou dans le dernier paramètre de n'importe quelle commande (auquel cas le backtick peut être mis mais est non nécessaire).</p>
<p> Quand des virgules ou des signes pourcentage sont entourés de guillemets dans une <a href="Variables.htm#Expressions">expression</a>, le backtick peut être mis mais n'est pas nécessaire. Par exemple : <code>Var := "15%"</code>.</p>
<h2 id="general-troubleshooting">Dépannage Général</h2>
<h3 id="install">Que faire si AutoHotkey ne s'installe pas ?</h3>
<p id="install-7z"><strong>Erreur 7-zip :</strong> Utiliser 7-zip ou un programme compatible pour extraire les fichiers d'installation de l'installateur exécutable, puis lancer setup.exe ou Installer.ahk (glisser-déposer Installer.ahk sur AutoHotkeyU32.exe).</p>
<p>L'installateur de AutoHotkey est fourni empaqueté comme archive 7-zip auto-extractrice qui essaie d'extraire dans le dossier Temp de l'utilisateur et d'exécuter un script compilé. Parfois la configuration du système ou d'autres facteurs empêchent les fichiers d'être extraits ou exécutés. Habituellement dans ces cas-là le message "7-zip Error" est affiché. L'extraction manuelle des fichiers dans un autre dossier peut aider.</p>
<p id="install-hang"><strong>L'installation traîne :</strong> Si la fenêtre d'installation s'affiche blanche ou pas du tout, essayer une ou les deux des solutions suivantes :</p>
<ul><li>Maintenir <kbd>Ctrl</kbd> ou <kbd>Shift</kbd> quand l'installateur se lance. Si il s'affiche une fenêtre de contrôle de compte de l'utilisateur (UAC), maintenir <kbd>Ctrl</kbd> ou <kbd>Shift</kbd> en cliquant sur Oui/Continuer. Devrait suivre une fenêtre demandant si l'installation est à faire avec les options par défaut ou non.</li>
<li>Installer avec les <a href="Program.htm#install">options de ligne de commande</a>. Si les fichiers d'installation ont été extraits manuellement de l'installateur exécutable, utiliser soit <code>setup.exe /S</code> soit <code>AutoHotkeyU32.exe Installer.ahk /S</code>.</li>
</ul>
<p><strong>Autre :</strong> Les suggestions ci-dessus couvrent les problèmes les plus courants. Pour plus d'aide, demander sur les forums.</p>
<h3 id="rightclick">Comment restaurer les options du menu contextuel du clic droit pour les fichiers .ahk ?</h3>
<p>Normalement si AutoHotkey est installé, clic droit sur un fichier de script AutoHotkey (.ahk) devrait afficher les options suivantes :</p>
<ul>
<li>Run Script (exécuter le script)</li>
<li>Compile Script (compiler le script) (selon l'option d'installation <em>Install script compiler</em>)</li>
<li>Edit Script (modifier le script)</li>
<li>Run as administrator (exécuter le script en tant qu'administrateur) (if UAC was enabled when AutoHotkey was installed)</li>
<li>Run with UI Access (exécuter le script avec accès UI) (si <a href="Program.htm#Installer_uiAccess">l'option</a> a été activé lors de l'installation)</li>
</ul>
<p>Parfois ces options sont remplacées par des paramètres du profil de l'utilisateur courant, comme si <em>Ouvrir avec</em> avait été utilisé pour changer le programme par défaut pour ouvrir les fichiers .ahk. Ceci peut être rétabli en supprimant du registre la clé suivante :</p>
<pre class="no-highlight">HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.ahk\UserChoice</pre>
<p>Ceci peut être fait en appliquant <a href="misc/remove-userchoice.reg" download="remove-userchoice.reg">ce patch de registre</a>.</p>
<p>Il peut aussi être nécessaire de réparer les valeurs par défaut du registre, soit en réinstallant AutoHotkey soit en lançant AutoHotkey Setup (depuis le menu Démarrer) et en sélectionnant <em>apply</em> vers le haut de la fenêtre.</p>
<h3 id="autoexec">Pourquoi certaines lignes de mon script ne s'exécutent-elles jamais ?</h3>
<p>Toutes les lignes à exécuter immédiatement au lancement du script devraient apparaître tout en haut du script, avant le premier <a href="Hotkeys.htm">hotkey</a>, <a href="Hotstrings.htm">hotstring</a>, ou <a href="lib/Return.htm">Return</a>. Pour des détails, voir <a href="Scripts.htm#auto">section d'auto-exécution</a>.</p>
<p>De plus, une <a href="Hotkeys.htm">hotkey</a> qui exécute plus d'une ligne doit avoir sa première ligne <em>sous</em> la hotkey, pas sur la même ligne. Par exemple :</p>
<pre>#space:: <em>; Win+Espace</em>
Run Notepad
WinWaitActive Sans titre - Bloc-notes
WinMaximize
return</pre>
<h3 id="vista">Pourquoi mon script ne marche-t-il pas sur Windows <em>xxx</em> alors qu'il marchait sur une version précédente ?</h3>
<p>Il y a beaucoup de variations de ce problème, comme :</p>
<ul>
<li>J'ai amélioré mon ordinateur/mis à jour Windows et maintenant mon script ne fonctionne plus.</li>
<li>Les hotkeys/hotstrings ne fonctionnent pas quand un programme exécuté en tant qu'administrateur est actif.</li>
<li>Certaines fenêtres refusent d'être automatisées (par exemple le Gestionnaire de périphériques ignore Send).</li>
</ul>
<p>En cas de changement de système d'exploitation, il y a des chances que quelque chose d'autre ait aussi changé et affecte le script. Par exemple, en cas de changement d'ordinateur, d'autres drivers ou logiciels peuvent être installés. Si en plus AutoHotkey a été mis à jour vers une version plus récente, trouver la version précédente et lire le <a href="AHKL_ChangeLog.htm">journal des changements (changelog)</a> et <a href="Compat.htm">les notes de compatibilité</a>.</p>
<p><a href="lib/SoundGet.htm">SoundGet</a>, <a href="lib/SoundSet.htm">SoundSet</a>, <a href="lib/SoundGetWaveVolume.htm">SoundGetWaveVolume</a> et <a href="lib/SoundSetWaveVolume.htm">SoundSetWaveVolume</a> se comportement différemment sur Vista et au-delà que sur des versions plus vieilles de Windows. En particulier, les nombres de périphérique sont différents et certains composants peuvent être indisponibles. Le comportement dépend des pilotes audio, qui sont forcément différents de ceux utilisés sous XP. Le <a href="lib/SoundSet.htm#Ex">script d'analyse carte son</a> permet de trouver les nombres de périphérique corrects.</p>
<p>Se référer également à la question suivante :</p>
<h3 id="uac">Comment contourner les problèmes engendrés par le contrôle du compte d'utilisateur (UAC) ?</h3>
<p>By default, <a href="https://en.wikipedia.org/wiki/User_Account_Control">User Account Control (UAC)</a> protects "elevated" programs (that is, programs which are running as admin) from being automated by non-elevated programs, since that would allow them to bypass security restrictions. Les hotkeys sont aussi bloquées, donc par exemple, un programme non-élevé ne peut pas espionner les entrées destinées à un programme élevé.</p>
<p>Le contrôle du compte d'utilisateur peut aussi empêcher <a href="lib/Send.htm#SendPlayDetail">SendPlay</a> et <a href="lib/BlockInput.htm">BlockInput</a> de fonctionner.</p>
<p>Les solutions courantes sont les suivantes :</p>
<ul>
<li>Activer l'option <em><a href="Program.htm#Installer_uiAccess">Add 'Run with UI Access' to context menus</a></em> (Ajouter 'Lancer avec accès UI' aux menus contextuels) dans l'installateur de AutoHotkey. Cette option peut être activée ou désactivée sans réinstaller AutoHotkey en ré-exécutant l'installateur de AutoHotkey depuis le menu Démarrer. Une fois activée, lancer le fichier de script par un clic droit dessus et sélectionner <em>Run with UI Access</em> (Lancer avec accès UI), ou utiliser la <a href="Scripts.htm#cmd">ligne de commande</a> comme <code>"AutoHotkeyU32_UIA.exe" "Mon script.ahk"</code> (mais bien inclure les chemins complets).</li>
<li>Exécuter le script <a href="Variables.htm#IsAdmin">en tant qu'administrateur</a>. Ceci a aussi pour effet que tout programme lancé par le script sera exécuté en tant qu'administrateur, et peut afficher à l'utilisateur une fenêtre de confirmation au lancement du script.</li>
<li>Désactiver la stratégie de sécurité locale "exécuter les comptes d’administrateurs en mode d’approbation d’administrateur" (Run all administrators in Admin Approval Mode) (non recommandé).</li>
<li>Complètement désactiver le contrôle de compte d'utilisateur. Ceci n'est pas recommandé, et n'est pas faisable à partir de Windows 8.</li>
</ul>
<h3 id="DefaultScript">Je ne peux pas modifier mon script en passant par l'icône de la zone de notifications car une erreur empêche mon script de se lancer. Que faire ?</h3>
<p>Il faut résoudre l'erreur dans le script pour pouvoir récupérer l'icône de la zone de notifications. Mais d'abord il faut trouver le fichier de script.</p>
<p>Chercher AutoHotkey.ahk dans les dossiers suivants :</p>
<ul>
<li>Le dossier <em>Documents</em> (ou <em>Mes Documents</em>).</li>
<li>Le dossier où AutoHotkey est installé, en général C:\Program Files\AutoHotkey. Si AutoHotkey est utilisé sans avoir été installé, regarder dans le dossier qui contient AutoHotkey.exe.</li>
</ul>
<p>Dans le cas où un autre exécutable AutoHotkey serait directement utilisé, le nom du script dépend de l'exécutable. Par exemple, en cas d'utilisation de AutoHotkeyU32.exe, cherche AutoHotkeyU32.ahk. Selon les paramètres du système, la partie ".ahk" peut être cachée, mais le fichier devrait avoir une icône comme <img src="static/ahkfile16.png" alt="[H]"></p>
<p>Il est en général possible de modifier un fichier de script par un clic droit dessus et en sélectionnant <em>Edit Script</em> (modifier le script). Si ça ne fonctionne pas, le fichier peut être ouvert avec Notepad ou un autre éditeur.</p>
<p>Si AutoHotkey est lancé depuis le menu Démarrer ou en lançant directement AutoHotkey.exe (sans paramètre de ligne de commande), il cherchera un script dans l'un des endroits indiqués ci-dessus. Alternativement, il est possible de créer un fichier de script (quelquechose.ahk) n'importe où, et d'exécuter le fichier de script au lieu de lancer AutoHotkey.</p>
<p>Voir aussi <a href="Scripts.htm#defaultfile">Paramètre de Ligne de Commande "Nom du Fichier de Script"</a> et <a href="Program.htm#portability">Portabilité de AutoHotkey.exe</a>.</p>
<h3 id="Debug">Comment trouver et corriger les erreurs dans mon code ?</h3>
<p>Pour des scripts simples, voir <a href="Scripts.htm#debug">Déboguer un Script</a>. Pour afficher le contenu d'une variable, utiliser <a href="lib/MsgBox.htm">MsgBox</a> ou <a href="lib/ToolTip.htm">ToolTip</a>. Pour des scripts complexes, voir <a href="Scripts.htm#idebug">Déboguage Interactif</a>.</p>
<h3 id="run">Pourquoi la commande <a href="lib/Run.htm">Run</a> échoue-t-elle à lancer un jeu ou un programme ?</h3>
<p>Certains programmes doivent être lancés dans leur propre dossier (dans le doute, il est préférable que ce soit le cas). Par exemple :</p>
<pre>Run, %A_ProgramFiles%\Une Application\App.exe, %A_ProgramFiles%\Une Application</pre>
<p>Si le programme à exécuter est dans <code>%A_WinDir%\System32</code> et que AutoHotkey 32-bit est utilisé sur un système 64-bit, le <a href="https://msdn.microsoft.com/en-us/library/aa384187">File System Redirector</a> (redirecteur du système de fichiers) peut interférer. Pour contourner le problème, utiliser <code>%A_WinDir%\SysNative</code> à la place ; c'est un dossier virtuel seulement visible par les programmes 32-bit exécutés sur des systèmes 64-bit.</p>
<h3 id="nonascii">Pourquoi les caractères hors ASCII de mon script sont-ils affichés ou envoyés incorrectement ?</h3>
<p>Réponse courte : Enregistrer le fichier en UTF-8 avec BOM.</p>
<p>Bien que AutoHotkey soit compatible avec du texte Unicode, il est optimisé pour la rétrocompatibilité, ce qui signifie que le choix par défaut est l'encodage ANSI plutôt que l'UTF-8 pourtant davantage recommandé dans le monde entier. AutoHotkey ne reconnaîtra pas automatiquement un fichier UTF-8 à moins qu'il ne commence par un indicateur d'ordre des octets (Byte Order Mark).</p>
<p>En d'autres termes, les fichiers UTF-8 sans indicateur d'ordre des octets sont mal interprétés, et les caractères hors ASCII sont décodés incorrectement. Pour résoudre le problème, sauvegarder le fichier en UTF-8 avec BOM ou <a href="Scripts.htm#cp">ajouter le commutateur de ligne de commande /CP65001</a>.</p>
<p>Pour enregistrer en UTF-8 avec BOM dans Notepad, sélectionner <em>UTF-8</em> dans le menu déroulant <em>Encodage</em> de la boîte de dialogue Enregistrer sous.</p>
<p>Pour lire d'autres fichiers UTF-8 sans indicateur d'ordre des octets, utiliser <code><a href="lib/FileEncoding.htm">FileEncoding</a> UTF-8-RAW</code>, l'option <code>*P65001</code> avec <a href="lib/FileRead.htm">FileRead</a>, ou <code>"UTF-8-RAW"</code> comme troisième paramètre de <a href="lib/FileOpen.htm">FileOpen()</a>. Le suffixe <code>-RAW</code> (brut) peut être omis, mais dans ce cas tout fichier nouvellement créé aura un indicateur d'ordre des octets.</p>
<p>A noter que les fichiers INI auxquels accèdent les commandes INI standards ne sont pas compatibles avec UTF-8 ; ils doivent être enregistrés en ANSI ou UTF-16.</p>
<h3 id="games">Pourquoi les <a href="Hotstrings.htm">Hotstrings</a>, <a href="lib/Send.htm">Send</a>, et <a href="lib/Click.htm">Click</a> n'ont aucun effet dans certains jeux ?</h3>
<p>Tous les jeux ne permettent pas à AutoHotkey d'envoyer des frappes et des clics ou de recevoir les couleurs des pixels.</p>
<p>Mais il y a des alternatives, essayer toutes les solutions décrites ci-dessous. Si toutes échouent, il est possible qu'AutoHotkey ne fonctionne pas avec le jeu en question. Parfois les jeux ont des systèmes anti-triche, come GameGuard et Hackshield. Dans ce cas, il y a de grandes chances que AutoHotkey ne fonctionne pas avec ce jeu.</p>
<ul>
<li>
<p>Utiliser SendPlay via la commande <a href="lib/Send.htm#SendPlay">SendPlay</a>, <a href="lib/SendMode.htm">SendMode Play</a> et/ou <a href="Hotstrings.htm">l'option de hotstring SP</a>.</p>
<pre>SendPlay, abc</pre>
<pre>SendMode, Play
Send, abc</pre>
<pre>:SP:btw::by the way
<em>; ou</em>
#Hotstring SP
::btw::by the way</pre>
<p class="note"><strong>Remarque</strong>: SendPlay peut n'avoir aucun effet sur Windows Vista ou version ultérieure si le contrôle de compte d'utilisateur (UAC) est activé, même si le script est lancé en tant qu'administrateur.</p>
</li>
<li>
<p>Augmenter <a href="lib/SetKeyDelay.htm">SetKeyDelay</a>. Par exemple :</p>
<pre>SetKeyDelay, 0, 50
SetKeyDelay, 0, 50, Play</pre>
</li>
<li>
<p>Essayer <a href="lib/ControlSend.htm">ControlSend</a>, qui pourrait fonctionner là où d'autres modes de Send échoueraient :</p>
<pre>ControlSend,, abc, titre_jeu</pre>
</li>
<li>
<p>Essayer les évènements enfoncer et relâcher d'une touche avec les différentes méthodes d'envoi :</p>
<pre>Send {TOUCHE down}{TOUCHE up}</pre>
</li>
<li>
<p>Essayer les évènements enfoncer et relâcher d'une touche avec un <a href="lib/ControlSend.htm">Sleep</a> entre les deux :</p>
<pre>Send {TOUCHE down}
Sleep 10 <em>; essayer différents nombres de millisecondes</em>
Send {TOUCHE up}</pre>
</li>
</ul>
<h3 id="perf">Comment améliorer les performances pour des jeux ou autre quand le processeur est très demandé ?</h3>
<p>Si les <a href="Hotkeys.htm">Hotkeys</a>, <a href="lib/Click.htm">Clicks</a>, ou <a href="lib/Send.htm">Sends</a> d'un script sont sensiblement plus lents qu'en temps normal quand le processeur est très sollicité, augmenter la priorité du processus du script peut aider. Pour ce faire, ajouter la ligne suivante vers le haut du script :</p>
<pre><a href="lib/Process.htm">Process</a>, Priority, , High</pre>
<h3 id="Virus">Mon programme antivirus a détecté AutoHotkey ou un script compilé comme logiciel malveillant. Est-ce vraiment un virus ?</h3>
<p>Bien qu'il soit possible que le fichier ait été infecté, le plus souvent ces alertes sont des <em>faux positifs</em>, c'est-à-dire que le programme antivirus se trompe. Une suggestion courante est de télécharger le fichier vers un service en ligne comme <a href="https://www.virustotal.com/">virustotal</a> ou <a href="https://virusscan.jotti.org/">Jotti</a> et voir ce que d'autres programmes antivirus ont à dire. Dans le doute, le fichier peut être envoyé à l'éditeur du logiciel antivirus pour confirmation. Cela pourrait aussi aider tous les utilisateurs de AutoHotkey, puisque l'éditeur pourrait confirmer qu'il s'agit d'un faux positif et modifier son produit pour être sympa avec AutoHotkey.</p>
<p>Les faux positifs peuvent être plus courants pour les scripts compilés qui ont été compressés, comme avec UPX (par défaut pour AutoHotkey 1.0 mais pas 1.1) ou MPRESS (optionnel pour AutoHotkey 1.1). Comme l'installation AutoHotkey par défaut ne comprend pas de compresseur, les scripts compilés ne sont par défaut pas compressés.</p>
<h2 id="common-tasks">Tâches Courantes</h2>
<h3 id="Download">Où trouver la compilation officielle, ou des versions plus anciennes ?</h3>
<p>Voir la <a href="https://www.autohotkey.com/download/">page de téléchargement de AutoHotkey</a>.</p>
<h3 id="USB">Puis-je lancer AutoHotkey depuis un périphérique USB ?</h3>
<p>Voir <a href="Program.htm#portability">Portabilité de AutoHotkey.exe</a>.</p>
<p>Note that when you compile a script that uses auto-included function libraries, AutoHotkey.exe and the Lib folder must be up one level from Ahk2Exe.exe (e.g. \AutoHotkey.exe vs \Compiler\Ahk2Exe.exe). A noter également que Ahk2Exe enregistre les paramètres à la clé de registre suivante : <code>HKCU\Software\AutoHotkey\Ahk2Exe</code>. The compiler itself (Ahk2Exe) is not needed to run scripts.</p>
<h3 id="output">Comment récupérer la sortie d'une opération en ligne de commande ?</h3>
<p>L'expérimentation montre que grâce à la mise en mémoire cache des fichiers, un fichier temporaire peut être très rapide pour des sorties relativements petites. En fait, si le fichier est supprimé immédiatement après utilisation, il n'est souvent pas du tout écrit sur le disque. Par exemple :</p>
<pre><a href="lib/Run.htm">RunWait</a> %ComSpec% /c dir > C:\Mon Fichier Temporaire.txt
FileRead, VarAvecContenu, C:\Mon Fichier Temporaire.txt
FileDelete, C:\Mon Fichier Temporaire.txt</pre>
<p>Pour éviter d'utiliser un fichier temporaire (surtout si la sortie est conséquente), considérer l'utilisation de la méthode <a href="lib/Run.htm#StdOut">Shell.Exec()</a> comme montré dans les exemples de la commande <a href="lib/Run.htm">Run</a>.</p>
<h3 id="close">Comment un script peut-il fermer, mettre en pause, suspendre ou recharger d'autres scripts ?</h3>
<p>D'abord, voici un exemple qui ferme un autre script :</p>
<pre>DetectHiddenWindows On <em>; Permet de détecter la fenêtre principale cachée d'un script.</em>
SetTitleMatchMode 2 <em>; Evite d'avoir à indiquer le chemin complet du fichier ci-dessous.</em>
WinClose ScriptFileName.ahk - AutoHotkey <em>; Changer ceci pour refléter le nom du script (sensible à la casse).</em></pre>
<p>Pour <a href="lib/Suspend.htm">suspendre</a>, <a href="lib/Pause.htm">mettre en pause</a> ou <a href="lib/Reload.htm">recharger</a> un autre script, remplacer la dernière ligne ci-dessus par l'une de celles-ci :</p>
<pre>PostMessage, 0x0111, 65305,,, ScriptFileName.ahk - AutoHotkey <em>; Suspendre.</em>
PostMessage, 0x0111, 65306,,, ScriptFileName.ahk - AutoHotkey <em>; Mettre en Pause.</em>
PostMessage, 0x0111, 65303,,, ScriptFileName.ahk - AutoHotkey <em>; Recharger.</em></pre>
<h3 id="repeat">Comment arrêter une action répétée sans quitter le script ?</h3>
<p>Pour mettre en pause ou reprendre l'exécution de tout le script à l'appui d'une touche, associer une hotkey à la commande <a href="lib/Pause.htm">Pause</a> comme dans cet exemple :</p>
<pre>^!p::Pause <em>; Appuyer sur Ctrl+Alt+P pour mettre en pause. Appuyer à nouveau pour reprendre.</em></pre>
<p>Pour arrêter une action qui se répète dans une <a href="lib/Loop.htm">Loop</a> (boucle), voir l'exemple fonctionnel suivant, avec une hotkey qui démarre et arrête sa propre action répétée. En d'autres termes, activer la hotkey une fois démarre la boucle. Activer encore la même hotkey arrêtera la boucle.</p>
<pre>#MaxThreadsPerHotkey 3
#z:: <em><strong>; Win+Z hotkey (change this hotkey to suit your preferences).</strong></em>
#MaxThreadsPerHotkey 1
if ContinuerExecutionWinZ <em>; Ceci veut dire qu'un <a href="misc/Threads.htm">thread</a> (fil d'exécution) exéute déjà la boucle ci-dessous.</em>
{
ContinuerExecutionWinZ := false <em>; Signaler à la boucle de ce thread d'arrêter.</em>
return <em>; Terminer ce thread afin que celui en dessous reprenne et voit les changements apportés par la ligne ci-dessus.</em>
}
<em>; Sinon :</em>
ContinuerExecutionWinZ := true
Loop
{
<em><strong>; The next four lines are the action you want to repeat (update them to suit your preferences):</strong></em>
ToolTip, Appuyer sur Win-Z à nouveau pour empêcher ceci de clignoter.
Sleep 1000
ToolTip
Sleep 1000
<em><strong>; But leave the rest below unchanged.</strong></em>
if not ContinuerExecutionWinZ <em>; L'utilisateur a indiqué à la boucle de s'arrêter en appuyant encore sur Win-Z.</em>
break <em>; Rompre l'exécution de la boucle.</em>
}
ContinuerExecutionWinZ := false <em>; Remise à zéro en préparation de la prochaine activation de cette hotkey.</em>
return</pre>
<h3 id="help">Comment utiliser de l'aide sensible au contexte pour les commandes AutoHotkey dans un éditeur quelconque ?</h3>
<p>Rajat a créé <a href="scripts/index.htm#ContextSensitiveHelp">ce script</a>.</p>
<h3 id="load">Comment détecter quand une page web a fini de charger ?</h3>
<p>Avec Internet Explorer, peut-être que la méthode la plus robuste est d'utiliser DllCall() et COM comme montré ici <a href="https://www.autohotkey.com/forum/topic19256.html">www.autohotkey.com/forum/topic19256.html</a>. Dans le même thème, le contenu de la barre d'adresse et de la barre de statut peut être récupéré comme montré ici <a href="https://www.autohotkey.com/forum/topic19255.html">www.autohotkey.com/forum/topic19255.html</a>.</p>
<p><strong>Méthode plus vieille, moins fiable :</strong> La technique dans l'exemple suivant fonctionnera avec MS Internet Explorer pour la plupart des pages. Une technique similaire peut fonctionner dans d'autres navigateurs :</p>
<pre>Run, www.yahoo.com
MouseMove, 0, 0 <em>; Empêche la barre de statut d'afficher un lien lié au survol de la souris au lieu de "Done".</em>
WinWait, Yahoo! -
WinActivate
<a href="lib/StatusBarWait.htm">StatusBarWait</a>, Done, 30
if ErrorLevel
MsgBox L'attente a été trop longue ou la fenêtre a été fermée.
else
MsgBox La page a fini de charger.</pre>
<h3 id="time">Comment comparer ou manipuler les dates et le temps ?</h3>
<p>La commande <a href="lib/EnvAdd.htm">EnvAdd</a> peut ajouter ou soustraire une quantité de jours, heures, minutes ou secondes à une chaîne de caractère temporelle dans le format <a href="lib/FileSetTime.htm#YYYYMMDD">AAAAMMDDHH24MISS</a>. L'exemple suivant soustrait 7 jours (days) du temps indiqué : <code>EnvAdd, VarAvecLeTemps, -7, days</code>.</p>
<p>Pour déterminer le temps entre deux dates ou temps, voir <a href="lib/EnvSub.htm">EnvSub</a>, qui donne un exemple. Aussi, la variable intégrée <a href="Variables.htm#Now">A_Now</a> contient le temps actuel local. Enfin, il y a plusieurs <a href="Variables.htm#date">variables de date/temps</a> intégrées, et la commande <a href="lib/FormatTime.htm">FormatTime</a> permet de créer une chaîne de caractère avec date/temps personnalisée.</p>
<h3 id="SendDate">Comment puis-je envoyer la date et/ou l'instant actuels ?</h3>
<p>Utiliser <a href="lib/FormatTime.htm">FormatTime</a> ou les <a href="Variables.htm#date">variables de date/temps intégrées</a>.</p>
<h3 id="ControlSend">Comment puis-je envoyer du texte à une fenêtre qui n'est pas active ou pas visible ?</h3>
<p>Utiliser <a href="lib/ControlSend.htm">ControlSend</a>.</p>
<h3 id="winamp">Comment contrôler Winamp même sans qu'il soit actif ?</h3>
<p>Voir <a href="misc/Winamp.htm">Automatiser Winamp</a>.</p>
<h3 id="msgbox">Comment changer le texte des boutons de <a href="lib/MsgBox.htm">MsgBox</a> ?</h3>
<p>Voici un <a href="scripts/index.htm#MsgBoxButtonNames">exemple</a>.</p>
<h3 id="DefaultEditor">Comment changer l'éditeur par défaut, qui est accessible via le menu contextuel ou l'icône de la zone de notifications ?</h3>
<p>Dans la section des exemples de <a href="lib/Edit.htm">Edit</a> se trouve un script permettant de changer l'éditeur par défaut.</p>
<h3 id="GuiSubmit">Comment enregistrer le contenu de mes variables associées à une GUI ?</h3>
<p>Utiliser <a href="lib/Gui.htm#Submit">Gui Submit</a>. Par exemple :</p>
<pre>Gui, Add, Text,, Entrez du texte et cliquez sur ENVOYER :
Gui, Add, Edit, vVarAssociee
Gui, Add, Button,, ENVOYER
Gui, Show
Return
ButtonENVOYER:
Gui, Submit, NoHide
MsgBox, Contenu du contrôle Edit : %VarAssociee%
Return</pre>
<h3 id="GDIPlus">Puis-je dessiner avec AutoHotkey ?</h3>
<p>Voir la <a href="https://www.autohotkey.com/forum/topic32238.html">bibliothèque standard GDI+</a> par tic. C'est aussi possible avec des méthodes rudimentaires utilisant Gui, mais de manière limitée.</p>
<h3 id="WinWaitAction">Comment puis-je démarrer une action quand une fenêtre apparaît, se ferme ou devient (in)active ?</h3>
<p>Utiliser <a href="lib/WinWait.htm">WinWait</a>, <a href="lib/WinWaitClose.htm">WinWaitClose</a> ou <a href="lib/WinWaitActive.htm">WinWait[Not]Active</a>.</p>
<p>Il y a aussi des solutions créées par des utilisateurs, comme <a href="https://www.autohotkey.com/boards/viewtopic.php?f=6&t=6463">OnWin.ahk</a> et <a href="https://www.autohotkey.com/board/topic/80644-how-to-hook-on-to-shell-to-receive-its-messages/">[How to] Hook on to Shell to receive its messages</a> ([Comment faire] Passer par le Shell pour recevoir ses messages).</p>
<h2 id="hotkeys-hotstrings-and-remapping">Hotkeys, Hotstrings, et Réaffectation de Touches</h2>
<h3 id="Startup">Comment faire pour que mes hotkeys et hotstrings soient activés dès le démarrage de mon ordinateur ?</h3>
<p>Il y a plusieurs manières pour qu'un script (ou n'importe quel programme) se lance automatiquement à chaque démarrage. Le plus simple est de placer un raccourci vers le script dans le menu Démarrage :</p>
<ol>
<li>Find the script file, select it, and press <kbd>Ctrl</kbd>+<kbd>C</kbd>.</li>
<li>Appuyer sur <kbd>Win</kbd>+<kbd>R</kbd> pour ouvrir la boîte de dialogue Exécuter, puis entrer <code>shell:startup</code> et cliquer sur OK ou appuyer sur <kbd>Entrée</kbd>. Ceci ouvrira le menu Démarrage de l'utilisateur courant. Pour ouvrir à la place le dossier pour tous les utilisateurs, entrer <code>shell:common startup</code> (toutefois, dans ce cas il faut être un administrateur pour continuer).</li>
<li>Cliquer droit dans la fenêtre, et cliquer "Coller le raccourci". Le raccourci vers le script devrait maintenant être dans le dossier Démarrage.</li>
</ol>
<h3 id="HotMouse">J'ai du mal à faire fonctionner mes boutons de souris comme hotkeys. Des conseils ?</h3>
<p>Les boutons gauche et droit de la souris devrait être utilisables normalement (par exemple, <code>#LButton::</code> est la hotkey <kbd>Win</kbd>+BoutonGauche). De manière similaire, le bouton du milieu et la rotation de la <a href="KeyList.htm">molette de souris</a> devraient être utilisables normalement sauf sur les souris où le pilote contrôle directement ces boutons.</p>
<p> Le quatrième bouton (XButton1) et le cinquième bouton (XButton2) peuvent être utilisables si le pilote de la souris autorise que leurs clics soient <a href="lib/KeyHistory.htm">visibles</a> par le système. S'ils ne sont pas visibles -- ou si la souris a plus de cinq boutons à utiliser -- il est possible d'essayer de configurer le logiciel fourni avec la souris (parfois accessible dans le Panneau de configuration ou le menu Démarrer) afin qu'il envoie des frappes à chaque appui sur un de ces boutons. Ces frappes peuvent ensuite être définies comme hotkey dans un script. For example, if you configure the fourth button to send <kbd>Ctrl</kbd>+<kbd>F1</kbd>, you can then indirectly configure that button as a hotkey by using <code>^F1::</code> in a script.</p>
<p>Si les quatrième et cinquième boutons d'une souris ne sont pas <a href="lib/KeyHistory.htm">visibles</a>, il est possible de changer le pilote de la souris vers le pilote par défaut inclus avec l'OS. En supposant qu'il existe un tel pilote pour cette souris en particulier et que les fonctionnalités fournies par le logiciel personnalisé de la souris ne sont pas nécessaires ou utiles.</p>
<h3 id="HotSymb">Comment définir des hotkeys avec la tabulation ou la barre espace ?</h3>
<p>Il faut utiliser le nom des touches (Tab pour tabulation et Space pour la barre espace) plutôt que les caractères. For example, <code>#Space</code> is <kbd>Win</kbd>+<kbd>Space</kbd> and <code>^!Tab</code> is <kbd>Ctrl</kbd>+<kbd>Alt</kbd>+<kbd>Tab</kbd>.</p>
<h3 id="Remap">Comment réaffecter des touches ou des boutons de la souris afin qu'elles deviennent des touches différentes ?</h3>
<p>Ceci est décrit sur la page de <a href="misc/Remap.htm">réaffectation</a>.</p>
<h3 id="DoublePress">Comment détecter un double appui d'une touche ou d'un bouton ?</h3>
<p>Utiliser les <a href="Variables.htm#h">variables intégrées pour hotkeys</a> comme suit :</p>
<pre>~Ctrl::
if (A_ThisHotkey = A_PriorHotkey && A_TimeSincePriorHotkey < 200)
MsgBox double appui
return</pre>
<h3 id="HotContext">Comment rendre une <a href="Hotkeys.htm">hotkey</a> ou un <a href="Hotstrings.htm">hotstring</a> exclusif à certains programmes ? Autrement dit, je veux qu'une certaine touche agisse normalement sauf quand une certaine fenêtre est active.</h3>
<p>La méthode recommandée est <a href="lib/_IfWinActive.htm">#IfWinActive</a>. Par exemple :</p>
<pre>#IfWinActive, ahk_class Notepad
^a::MsgBox Vous avez appuyé sur Ctrl-A pendant que Notepad était actif.
</pre>
<h3 id="HotPrefix">Comment une touche préfixe peut-elle garder sa fonction native au lieu de ne rien faire ?</h3>
<p>Voir l'exemple suivant, qui fait de Numpad0 (0 sur le pavé numérique) une touche préfixe :</p>
<pre>Numpad0 & Numpad1::MsgBox, Vous avez appuyé sur Numpad1 tout en maintenant Numpad0 enfoncée.</pre>
<p>Maintenant, pour que Numpad0 envoie une vraie frappe Numpad0 dès que la touche n'a pas été utilisée pour activer une hotkey comme celle ci-dessus, ajouter la hotkey suivante :</p>
<pre> $Numpad0::Send, {Numpad0}</pre>
<p>Le préfixe $ est nécessaire pour empêcher l'affichage d'un avertissement sur une boucle infinie (puisque la hotkey "s'envoie elle-même"). De plus, l'action ci-dessus se produit quand la touche est <strong>relachée</strong>.</p>
<h3 id="HotOverride">Comment changer ou désactiver les touches de raccourcis Windows intégrées, comme Win+U (options d'affichage) et Win+R (Exécuter) ?</h3>
<p>Voici quelques <a href="misc/Override.htm">exemples</a>.</p>
<h3 id="HotRegex">Puis-je utiliser des caractères joker (wildcards) ou des expressions régulières dans des Hotstrings ?</h3>
<p>Utiliser le <a href="https://github.com/polyethene/AutoHotkey-Scripts/blob/master/Hotstrings.ahk">script</a> par polyethene (des exemples sont fournis).</p>
<h3 id="SpecialKey">Comment puis-je utiliser une hotkey qui n'est pas dans ma disposition clavier ?</h3>
<p>Voir <a href="KeyList.htm#SpecialKeys">Touches Spéciales</a>.</p>
<h3 id="HotZero">Mon clavier numérique a une touche spéciale 000. Est-il possible de l'utiliser pour une hotkey ?</h3>
<p>Oui. This <a href="scripts/index.htm#Numpad000">example script</a> makes <kbd>000</kbd> into an equals key. L'action peut être modifiée en remplaçant la ligne <code>Send, =</code> avec des lignes quelconques.</p>
</body>
</html>