-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathScripts.htm
438 lines (422 loc) · 48.6 KB
/
Scripts.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
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
<!DOCTYPE HTML>
<html lang="fr">
<head>
<title>Scripts - Définition & Utilisation | AutoHotkey</title>
<meta name="description" content="Apprendre les détails sur les scripts en général, découper les lignes longues, compiler un script, passer des paramètres de ligne de commande, page de code et débogage." />
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link href="static/theme.css" rel="stylesheet" type="text/css" />
<script src="static/content.js" type="text/javascript"></script>
</head>
<body>
<h1>Scripts</h1>
<p>Sujets connexes :</p>
<ul>
<li><a href="Program.htm">Utiliser le Programme</a> : Comme utiliser AutoHotkey, en général.</li>
<li><a href="Concepts.htm">Concepts et Conventions</a> : Explication générale de différents concepts utilisés par AutoHotkey.</li>
<li><a href="Language.htm">Language de Script</a> : Détails spécifiques sur la syntaxe (comment écrire des scripts).</li>
</ul>
<h2 id="toc">Table des Matières</h2>
<ul>
<li><a href="#intro">Introduction</a></li>
<li><a href="#auto">Le Haut du Script (Section d'Auto-exécution)</a> : Cette partie s'exécute automatiquement au lancement du script.</li>
<li><a href="#continuation">Diviser une Longue Ligne en une Série de Lignes Plus Courtes</a> : Ceci peut améliorer la lisibilté et la maintenabilité d'un script.</li>
<li><a href="#ahk2exe">Convert a Script to an EXE (Ahk2Exe)</a>: Convertir un script .ahk en un fichier .exe qui peut être exécuté sur un PC quelconque.</li>
<li><a href="#cmd">Passer des Paramètres de Ligne de Commande à un Script</a> : Les variables %1%, %2%, etc. contiennent les paramètres d'entrée.</li>
<li><a href="#cp">Codepage de Fichier de Script</a> : Utiliser sans risque des caractères non-ASCII dans les scripts.</li>
<li><a href="#debug">Déboguer un Script</a> : Trouver les problèmes dans un script au mauvais comportement.</li>
</ul>
<h2 id="intro">Introduction</h2>
<p>Chaque script est un simple fichier texte contenant les lignes à faire exécuter par le programme (AutoHotkey.exe). Un script peut aussi contenir des <a href="Hotkeys.htm">hotkeys</a> et des <a href="Hotstrings.htm">hotstrings</a>, ou même ne contenir que des hotkeys et hostrings. Toutefois, en l'absence de hotkeys et de hotstrings, un script effectuera ses commandes dans l'ordre du haut vers le bas à l'instant où il est lancé.</p>
<p>Le programme charge le script en mémoire ligne par ligne, et chaque ligne peut être constituée d'au maximum 16383 caractères. Pendant le chargement, le script est <a href="misc/Performance.htm">optimisé</a> et validé. Les erreurs de syntaxe seront affichées, et doivent être corrigées pour que le script puisse être exécuté.</p>
<h2 id="auto">Le Haut du Script (Section d'Auto-exécution)</h2>
<p>Une fois que le script a été chargé, l'exécution commence à la ligne du haut, et continue jusqu'à ce que <a href="lib/Return.htm">Return</a>, <a href="lib/Exit.htm">Exit</a>, ou un <a href="Hotkeys.htm">label hotkey/hotstring</a>, ou la fin physique du script soit atteinte (selon ce qui arrive en premier). La partie en haut du script est appelée la section d'<em>auto-exécution</em>.</p>
<p class="warning"><strong>Note :</strong> Alors que le <em>premier</em> hotkey/hotstring du script a le même effet qu'un <a href="lib/Return.htm">return</a>, ce n'est pas le cas des autres hotkeys et labels.</p>
<p>If the script is not <a href="lib/_Persistent.htm">persistent</a>, it will terminate after the auto-execute section has completed. Otherwise, it will stay running in an idle state, responding to events such as <a href="Hotkeys.htm">hotkeys</a>, <a href="Hotstrings.htm">hotstrings</a>, <a href="lib/Gui.htm#label">GUI events</a>, <a href="lib/Menu.htm">custom menu items</a>, and <a href="lib/SetTimer.htm">timers</a>. A script is automatically persistent if it contains hotkeys, hotstrings, <a href="lib/OnMessage.htm">OnMessage()</a> or <a href="lib/Gui.htm">GUI</a>, and in a few other cases. The <a href="lib/_Persistent.htm">#Persistent</a> directive can also be used to explicitly make the script persistent.</p>
<p>Chaque <a href="misc/Threads.htm">fil d'exécution</a> (thread) lancé par <a href="Hotkeys.htm">hotkey</a>, <a href="Hotstrings.htm">hotstring</a>, <a href="lib/Menu.htm">élément de menu</a>, <a href="lib/Gui.htm#label">évènement de GUI</a>, ou <a href="lib/SetTimer.htm">minuterie</a> démarre de zéro avec les valeurs par défaut pour les attributs suivants telles que définies dans la section d'auto-exécution. Si non spécifiées, les valeurs par défaut standards sont utilisées (ainsi que documenté sur chacune des pages suivantes) : <a href="lib/AutoTrim.htm">AutoTrim</a>, <a href="lib/CoordMode.htm">CoordMode</a>, <a href="lib/Critical.htm">Critical</a>, <a href="lib/DetectHiddenText.htm">DetectHiddenText</a>, <a href="lib/DetectHiddenWindows.htm">DetectHiddenWindows</a>, <a href="lib/FileEncoding.htm">FileEncoding</a>, <a href="lib/ListLines.htm">ListLines</a>, <a href="lib/SendLevel.htm">SendLevel</a>, <a href="lib/SendMode.htm">SendMode</a>, <a href="lib/SetBatchLines.htm">SetBatchLines</a>, <a href="lib/SetControlDelay.htm">SetControlDelay</a>, <a href="lib/SetDefaultMouseSpeed.htm">SetDefaultMouseSpeed</a>, <a href="lib/SetFormat.htm">SetFormat</a>, <a href="lib/SetKeyDelay.htm">SetKeyDelay</a>, <a href="lib/SetMouseDelay.htm">SetMouseDelay</a>, <a href="lib/SetRegView.htm">SetRegView</a>, <a href="lib/SetStoreCapslockMode.htm">SetStoreCapsLockMode</a>, <a href="lib/SetTitleMatchMode.htm">SetTitleMatchMode</a>, <a href="lib/SetWinDelay.htm">SetWinDelay</a>, <a href="lib/StringCaseSense.htm">StringCaseSense</a>, et <a href="lib/Thread.htm">Thread</a>.</p>
<p>Si la section d'auto-exécution prend longtemps à terminer (ou ne termine jamais), les valeurs par défaut des paramètres ci-dessus prendront effet après 100 millisecondes. Quand la section d'auto-exécution termine enfin (si elle termine), les valeurs par défaut sont mises à jour à nouveau pour être telles qu'à la fin de la section d'auto-exécution. Ainsi, il est en général mieux de faire tout changement souhaité des valeurs par défaut en haut des scripts qui contiennent des <a href="Hotkeys.htm">hotkeys</a>, <a href="Hotstrings.htm">hotstrings</a>, <a href="lib/SetTimer.htm">minuteries</a>, ou des <a href="lib/Menu.htm">éléments de menu personnalisé</a>. A noter que chaque <a href="misc/Threads.htm">fil d'exécution</a> a son propre ensemble de valeurs pour les paramètres ci-dessus. Les changements apportés à ces paramètres n'affecteront pas les autres <a href="misc/Threads.htm">fils d'exécution</a>.</p>
<h2 id="continuation">Diviser une Longue Ligne en une Série de Lignes Plus Courtes</h2>
<p>Les longues lignes peuvent être divisées en un ensemble de lignes plus courtes pour améliorer la lisibilité et la maintenabilité. Ceci ne réduit pas la vitesse d'exécution du script puisque de telles lignes sont fusionnées dans la mémoire au moment où le script est lancé.</p>
<p id="continuation-line"><strong>Méthode #1</strong> : Une ligne qui commence par "and", "or", ||, &&, une virgule, ou un <a href="Variables.htm#concat">point</a> est automatiquement fusionnée avec la ligne directement au-dessus (en v1.0.46+, ceci est aussi vrai pour tous les autres <a href="Variables.htm#Operators">opérateurs d'expression</a> sauf ++ et --). Dans l'exemple suivant, la seconde ligne est ajoutée à la première car elle commence par une virgule :</p>
<pre>FileAppend, Ceci est le texte à ajouter.`n <em>; Un commentaire est autorisé ici.</em>
, %A_ProgramFiles%\UneApplication\FichierJournal.txt <em>; Commentaire.</em></pre>
<p>De manière similaire, les lignes suivantes seraient fusionnées en une seule puisque les deux dernières commencent avec "and" ou "or" :</p>
<pre>if (Couleur = "Rouge" or Couleur = "Vert" or Couleur = "Bleu" <em>; Commentaire.</em>
<strong>or</strong> Couleur = "Noir" or Couleur = "Gris" or Couleur = "Blanc") <em>; Commentaire.</em>
<strong>and</strong> ProduitDisponibleDansCetteCouleur(Produit, Couleur) <em>; Commentaire.</em></pre>
<p>L'<a href="Variables.htm#ternary">opérateur ternaire</a> est aussi un bon candidat :</p>
<pre>ProduitDisponible := (Couleur = "Rouge")
<strong>?</strong> false <em>; Pas de produit rouge disponible, pas besoin d'appeler la fonction.</em>
<strong>:</strong> ProduitDisponibleDansCetteCouleur(Produit, Couleur)</pre>
<p>Bien que l'indentation utilisée dans les exemples ci-dessus soit facultative, elle peut améliorer la clarté en indiquant les lignes appartenant à celles au-dessus. Also, it is not necessary to include extra spaces for lines starting with the words "AND" and "OR"; the program does this automatically. Enfin, des lignes vides ou des <a href="Language.htm#comments">commentaires</a> peuvent être ajoutés entre les lignes, ou à la fin de chaque ligne comme dans les exemples ci-dessus.</p>
<p id="continuation-section"><strong>Méthode #2</strong> : Cette méthode devrait être utilisée pour fusionner un grand nombre de lignes ou quand les lignes ne permettent pas d'utiliser la Méthode #1. Bien que cette méthode soit surtout utile pour les <a href="Hotstrings.htm">hotstrings à remplacement automatique</a>, elle peut aussi être utilisée avec n'importe quelle commande ou <a href="Variables.htm#Expressions">expression</a>. Par exemple :</p>
<pre><em>; EXEMPLE #1 :</em>
Var =
(
Une ligne de texte.
<i>By default</i>, the hard carriage return (Enter) between the previous line and this one will be stored as a linefeed (`n).
<i>By default</i>, the spaces to the left of this line will also be stored (the same is true for tabs).
<i>By default</i>, variable references such as %Var% are resolved to the variable's contents.
)
<em>; EXAMPLE #2 - expression syntax (recommended):</em>
Var := "
(
Same as above, except that variable references such as %Var% are not resolved.
Instead, specify variables as follows:" Var "
)"
<em>; EXAMPLE #3:</em>
FileAppend, <em>; La virgule est requise dans ce cas.</em>
(
Ligne 1 du texte.
Ligne 2 du texte. Par défaut, un retour à la ligne (`n) est présent entre les lignes.
), C:\Mon Fichier.txt</pre>
<p>Dans les exemples ci-dessus, une série de ligne est délimitée en haut et en bas par une paire de parenthèses. Ceci est appelé une <em>section de continuation</em>. A noter que la ligne du bas contiens le dernier paramètre de <a href="lib/FileAppend.htm">FileAppend</a> après la parenthèse fermante. Faire ainsi est facultatif ; ceci est fait dans des cas similaires afin que la virgule soit vue comme un délimiteur de paramètre plutôt qu'une virgule littérale.</p>
<p>Le comportement par défaut d'une section de continuation peut être modifié en incluant une ou plus des options suivantes à droite de la parenthèse ouvrante de la section. Si plus d'une option est présente, elles sont séparées par des espaces. Par exemple : <code>( LTrim Join| %</code>.</p>
<p id="Join"><strong>Join</strong> : Indique comment les lignes devraient être jointes ensemble. Si cette option est omise, chaque ligne sauf la dernière sera suivie d'un caractère retour à la ligne (`n). Si le mot <em>Join</em> est indiqué seul, les lignes sont jointes directement sans aucun caractère entre. Sinon, le mot <em>Join</em> devrait être immédiatement suivi d'au plus 15 caractères. Par exemple, <code>Join`s</code> insèrerait un espace après chaque ligne sauf la dernière ("`s" indique un espace littéral -- il s'agit d'une séquence d'échappement spéciale reconnue seulement par <em>Join</em>). Un autre exemple est <code>Join`r`n</code>, qui insère CR+LF entre les lignes. De même, <code>Join|</code> insère unne barre verticale entre les lignes. Pour que la dernière ligne de la section soit également suivie de la chaîne de caractères indiquée à Join, inclure une ligne vide immédiatement au-dessus de la parenthèse fermante de la section.</p>
<p>Limitation connue: Si la chaîne de caractères indiquée à Join finit par un deux-points, ce ne doit pas être la dernière option sur la ligne. Par exemple, <code>(Join:</code> est vu comme le label "(Join" et <code>(LTrim Join:</code> n'est pas pris en charge, mais <code>(Join: C</code> va.</p>
<p id="LTrim"><strong>LTrim</strong> : Ignore les espaces et les tabulations au début de chaque ligne. Ceci est principalement utilisé pour permettre d'indenter dans une section de continuation. De plus, cette option peut être activée pour plusieurs sections de continuation en indiquant <code>#LTrim</code> sur une ligne séparée. <code>#LTrim</code> est positionnelle : elle affecte toutes les sections de continuation sous elle. L'option peut être désactivée avec <code>#LTrim Off</code>.</p>
<p><strong>RTrim0</strong> (RTrim suivi d'un zéro) : Désactive l'omission des espaces et tabulations à la fin de chaque ligne.</p>
<p id="CommentOption"><strong>Comments</strong> (ou <strong>Comment</strong> ou <strong>Com</strong> ou <strong>C</strong>) <span class="ver">[v1.0.45.03+]</span> : Permet les <a href="Language.htm#comments">commentaires point-virgule</a> dans la section de continuation (mais pas <code>/*..*/</code>). De tels commentaires (ainsi que tout espace ou tabulation à leur gauche) sont entièrement ignorés dans la ligne résultante au lieu d'être traités comme du texte littéral. Chaque commentaire peut apparaître à droite d'une ligne ou seul sur une nouvelle ligne.</p>
<p><strong>%</strong> (signe pourcentage) : Traite les signes pourcentage littéralement plutôt que comme indiquant des références de variable. Ceci évite à devoir <a href="misc/EscapeChar.htm">échapper</a> chaque signe pourcentage pour en faire un caractère littéral. Cette option n'est pas nécessaire quand les signes pourcentages sont déjà des caractères littéraux, comme pour les <a href="Hotstrings.htm">hotstrings à remplacement automatique</a>.</p>
<p><strong>,</strong> (virgule) : Traite les virgules comme des délimiteurs plutôt que des virgules littérales. Cette option rarement utilisée n'est nécessaire que pour les virgules entre paramètres de commande puisque dans les <a href="Functions.htm">appels de fonction</a>, le type de virgule n'a pas d'importance. De plus, cette option ne transforme que les virgules délimitant réellement un paramètre. En d'autres termes, une fois que le dernier paramètre de la commande est atteint (ou s'il n'y a pas de paramètres), les virgules suivantes sont traitées comme des virgules littérales sans tenir compte de cette option.</p>
<p id="accent"><strong>`</strong> (accent grave) : Traite chaque guillemet oblique littéralement plutot que comme <a href="misc/EscapeChar.htm">caractère d'échappement</a>. Ceci empêche aussi les virgules et les signes pourcentage d'être échappés explicitement et individuellement. De plus, ceci empêche la traduction de n'importe quel séquence d'échappement indiquée explicitement comme `r et `t.</p>
<p id="non-continuation"><strong>)</strong> <span class="ver">[v1.1.01+]</span> : Si une parenthèse fermante apparaît dans les options d'une section de continuation (sauf en paramètre de l'option <a href="#Join">Join</a>), la ligne est ré-interprétée comme une expression au lieu du début d'une section de continuation. Ceci permet à des expressions comme <code>(x.y)[z]()</code> de fonctionner sans avoir à échapper la parenthèse ouvrante.</p>
<p><u>Remarques</u></p>
<p>Les <a href="misc/EscapeChar.htm">séquences d'échappement</a> comme `n (saut de ligne) et `t (tabulation) sont pris en charge à l'intérieur de la section de continuation sauf quand l'option <a href="#accent">accent grave (`)</a> a été spécifiée.</p>
<p>Quand l'<a href="#CommentOption">option commentaire</a> est absente, les commentaires point-virgule et /*..*/ ne sont pas pris en charge dans la section de continuation puisqu'ils sont vus comme du texte littéral. Toutefois, des commentaires peuvent être inclus sur les lignes en bas et en haut de la section. Par exemple :</p>
<pre>FileAppend, <em>; Commentaire.
; Commentaire.</em>
( LTrim Join <em>; Commentaire.</em>
; Ceci <strong>n'est pas</strong> un commentaire ; ceci est littéral. Ajouter le mot <i>Comments</i> dans la ligne ci-dessus pour faire de ceci un commentaire.
), C:\Fichier.txt <em>; Commentaire.</em></pre>
<p>En conséquence, les point-virgules n'ont pas à être <a href="misc/EscapeChar.htm">échappés</a> dans une section de continuation.</p>
<p>Une section de continuation ne peut pas produire une ligne dont la longueur totale dépasse 16383 caractères (si cela arrive, le programme émet une alerte au moment de lancer le script). Une manière de contourner ce problème est d'effectuer une série de concaténations dans une variable. Par exemple :</p>
<pre>Var := "
(
...
)"
Var .= "`n <em>; Ajouter plus de texte à la variable via une autre section de continuation.</em>
(
...
)"
FileAppend, %Var%, C:\Mon Fichier.txt</pre>
<p>Puisqu'une parenthèse fermante indique la fin d'une section de continuation, pour avoir une ligne commençant par une parenthèse fermante littérale, la précéder d'un accent grave/guillemet oblique : <code>`)</code>.</p>
<p>Une section de continuation peut être suivie immédiatement d'une ligne contenant la parenthèse ouvrante d'une autre section de continuation. Ceci permet aux options mentionnées plus haut de varier lors de la construction d'une ligne.</p>
<p>La construction par morceaux d'une section de continuation en utilisant <a href="lib/_Include.htm">#Include</a> n'est pas prise en charge.</p>
<h2 id="ahk2exe">Convert a Script to an EXE (Ahk2Exe)</h2>
<p>A script compiler (courtesy of fincs, with additions by TAC109) is included with the program.</p>
<p>Une fois qu'un script est compilé, il devient un exécutable indépendant ; c'est-à-dire que AutoHotkey.exe n'est pas requis pour exécuter le script. Le processus de compilation créé un fichier exécutable qui contient : l'interpréteur AutoHotkey, le script, tout fichier que le script <a href="lib/_Include.htm">inclut</a>, et tout fichier incorporé via la commande <a href="lib/FileInstall.htm">FileInstall</a>. <span class="ver">[v1.1.33+]:</span> Additional files can be included using <a href="misc/Ahk2ExeDirectives.htm">compiler directives</a>.</p>
<h3 id="ahk2exe-toc">Compiler Topics</h3>
<ul>
<li><a href="#ahk2exe-run">Running the Compiler</a></li>
<li><a href="#ahk2exe-base">Base Executable File</a></li>
<li><a href="#CompilerDirectives">Script Compiler Directives</a></li>
<li><a href="#mpress">Compression de Scripts Compilés</a></li>
<li><a href="#information">Background Information</a></li>
</ul>
<h3 id="ahk2exe-run">Running the Compiler</h3>
<p>Ahk2Exe peut être utilisé des manières suivantes :</p>
<ul>
<li>
<p><strong>Interface GUI</strong> : Lancer l'option "Convert .ahk to .exe" (Convertir .ahk en .exe) dans le Menu Démarrer. (After invoking the GUI, there may be a pause before the window is shown; see <a href="#information">Background Information</a> for more details.)</p>
</li>
<li>
<p><strong>Clic droit</strong> : Within an open Explorer window, right-click any .ahk file and select "Compile Script" (only available if the script compiler option was chosen when AutoHotkey was installed). Ceci créé un fichier EXE de même nom de fichier de base que le script, qui apparaît après un court instant dans le même dossier. Note : The EXE file is produced using the same custom icon, .bin file and <a href="#mpress">compression</a> setting that were last saved in Method #1 above, or as specified by any relevant <a href="misc/Ahk2ExeDirectives.htm">compiler directive</a> in the script.</p>
</li>
<li id="ahk2exeCmd">
<p><strong>Ligne de Commande</strong> : The compiler can be run from the command line by using the parameters shown below. If any command line parameters are used, the script is compiled immediately unless <code class="no-highlight">/gui</code> is used. All parameters are optional, except that there must be one <code class="no-highlight">/gui</code> or <code class="no-highlight">/in</code> parameter.</p>
<style>
#param_pairs td:not(:last-child) {
white-space: nowrap;
}
</style>
<table class="info" id="param_pairs">
<tr>
<th abbr="Param">Parameter pair</th>
<th>Signification</th>
</tr>
<tr id="SlashIn">
<td>/in <i>script_name</i></td>
<td>The path and name of the script to compile. This is mandatory if any other parameters are used, unless <code class="no-highlight">/gui</code> is used.</td>
</tr>
<tr id="SlashOut">
<td>/out <i>exe_name</i></td>
<td>The path\name of the output .exe to be created. Default is the directory\base_name of the input file plus extension of .exe, or any relevant <a href="misc/Ahk2ExeDirectives.htm">compiler directive</a> in the script.</td>
</tr>
<tr id="slashIcon">
<td>/icon <i>icon_name</i></td>
<td>The icon file to be used. Default is the last icon saved in the GUI interface, or any <a href="misc/Ahk2ExeDirectives.htm#SetMainIcon">SetMainIcon</a> compiler directive in the script.</td>
</tr>
<tr id="SlashBase">
<td>/base <i>file_name</i></td>
<td><span class="ver">[v1.1.33.10+]:</span> The base file to be used (a .bin file or in <span class="ver">[v1.1.34+]</span> an .exe file). Default is the last base file name saved in the GUI interface, or any <a href="misc/Ahk2ExeDirectives.htm#Bin">Base</a> compiler directive in the script.</td>
</tr>
<tr id="SlashResourceID">
<td>/resourceid <i>name</i></td>
<td><span class="ver">[v1.1.34+]</span>: Assigns a non-standard resource ID to be used for the main script for compilations which use an <a href="#SlashBase">.exe base file</a> (see <a href="Program.htm#embedded-scripts">Embedded Scripts</a>). Numeric resource IDs should consist of a hash sign (#) followed by a decimal number. Default is #1, or any <a href="misc/Ahk2ExeDirectives.htm#ResourceID">ResourceID</a> compiler directive in the script.</td>
</tr>
<tr id="SlashCp">
<td>/cp <i>codepage</i></td>
<td><span class="ver">[v1.1.23.01+]:</span> Overrides the default codepage used to read script files. For a list of possible values, see <a href="https://docs.microsoft.com/en-au/windows/win32/intl/code-page-identifiers">Code Page Identifiers</a>. Note that Unicode scripts should begin with a byte-order-mark (BOM), rendering the use of this parameter unnecessary.</td>
</tr>
<tr id="SlashCompress">
<td>/compress <i>n</i></td>
<td><span class="ver">[v1.1.33+]:</span> <a href="#mpress">Compress</a> the exe? 0 = no, 1 = use MPRESS if present, 2 = use UPX if present. Default is the last setting saved in the GUI interface.</td>
</tr>
<tr id="SlashGui">
<td>/gui</td>
<td><span class="ver">[v1.1.33+]:</span> Shows the GUI instead of immediately compiling. The other parameters can be used to override the settings last saved in the GUI. <code>/in</code> is optional in this case.</td>
</tr>
<tr id="SlashGuiSilent">
<td>/silent [verbose]</td>
<td><span class="ver">[v1.1.33.10+]:</span> Disables all message boxes and instead outputs errors to the standard error stream (stderr); or to the standard output stream (stdout) if stderr fails. Other messages are also output to stdout. Optionally enter the word <code>verbose</code> to output status messages to stdout as well.</td>
</tr>
<tr id="SlashAhk">
<td class="warning"><strong>Deprecated:</strong><br>/ahk <i>file_name</i></td>
<td class="warning"><span class="ver">[v1.1.33+]:</span> The path\name of AutoHotkey.exe to be used as a utility when compiling the script.</td>
</tr>
<tr id="SlashMpress">
<td class="warning"><strong>Deprecated:</strong><br>/mpress <i>0or1</i></td>
<td class="warning"><a href="#mpress">Compress</a> the exe with MPRESS? 0 = no, 1 = yes. Default is the last setting used in the GUI interface.</td>
</tr>
<tr id="SlashBin">
<td class="warning"><strong>Deprecated:</strong><br>/bin <i>file_name</i></td>
<td class="warning">The .bin file to be used. Default is the last .bin file name saved in the GUI interface.</td>
</tr>
</table>
<p>Par exemple :</p>
<pre class="no-highlight">Ahk2Exe.exe /in "MonScript.ahk" /icon "MonIcone.ico"</pre>
</li>
</ul>
<p>Notes :</p>
<ul>
<li>Parameters containing spaces must be enclosed in double quotes.</li>
<li>La compilation n'améliore en général pas la performance d'un script.</li>
<li>A partir de v1.1.01, la protection par mot de passe et le commutateur /NoDecompile ne sont plus pris en charge.</li>
<li>The commands <a href="lib/_NoTrayIcon.htm">#NoTrayIcon</a> and "<a href="lib/Menu.htm#MainWindow">Menu, Tray, MainWindow</a>" affect the behavior of compiled scripts.</li>
<li>The built-in variable <a href="Variables.htm#IsCompiled">A_IsCompiled</a> contains 1 if the script is running in compiled form. Dans le cas contraire, elle est vide.</li>
<li><span class="ver">[v1.0.43+]:</span> When parameters are passed to Ahk2Exe, a message indicating the success or failure of the compiling process is written to stdout. Bien que le message n'apparaisse pas dans le terminal, il peut être "attrapé" par des méthodes telles que la redirection de la sortie vers un fichier. </li>
<li> <span class="ver">[v1.1.22.03+]:</span> Additionally in the case of a failure, Ahk2Exe has exit codes indicating the kind of error that occurred. These error codes can be found at <a href="https://github.com/AutoHotkey/Ahk2Exe/blob/master/ErrorCodes.md">GitHub (ErrorCodes.md)</a>.</li>
</ul>
<p>Le code source du compilateur et des versions plus récentes peuvent être trouvées sur <a href="https://github.com/AutoHotkey/Ahk2Exe">GitHub</a>.</p>
<h3 id="ahk2exe-base">Base Executable File</h3>
<p>Each compiled script .exe is based on an executable file which implements the interpreter. The base files included in the Compiler directory have the ".bin" extension; these are versions of the interpreter which do not include the capability to load external script files. Instead, the program looks for a Win32 (RCDATA) resource named ">AUTOHOTKEY SCRIPT<" and loads that, or fails if it is not found.</p>
<p><span class="ver">[v1.1.34+]:</span> The standard AutoHotkey executable files can also be used as the base of a compiled script, by embedding a Win32 (RCDATA) resource with ID 1. (Additional scripts can be added with the <a href="misc/Ahk2ExeDirectives.htm#AddResource">AddResource</a> compiler directive.) This allows the compiled script .exe to be used with the <a href="#SlashScript">/script</a> switch to execute scripts other than the main embedded script. For more details, see <a href="Program.htm#embedded-scripts">Embedded Scripts</a>.</p>
<h3 id="CompilerDirectives">Script Compiler Directives</h3>
<p><span class="ver">[v1.1.33+]:</span> Script compiler directives allow the user to specify details of how a script is to be compiled. Some of the features are:</p>
<ul>
<li>Ability to change the version information (such as the name, description, version...).</li>
<li>Ability to add resources to the compiled script.</li>
<li>Ability to tweak several miscellaneous aspects of compilation.</li>
<li>Ability to remove code sections from the compiled script and vice versa.</li>
</ul>
<p>See <a href="misc/Ahk2ExeDirectives.htm">Script Compiler Directives</a> for more details.</p>
<h3 id="mpress">Compression de Scripts Compilés</h3>
<p>Ahk2Exe optionally uses MPRESS or <span class="ver">[v1.1.33+]</span> UPX freeware to compress compiled scripts. If <strong>MPRESS.exe</strong> and/or <strong>UPX.exe</strong> has been copied to the "Compiler" subfolder where AutoHotkey was installed, either can be used to compress the .exe as directed by the <code>/compress</code> parameter or the GUI setting. </p>
<p><strong>MPRESS</strong> official website (downloads and information): <a href="http://www.matcode.com/mpress.htm">http://www.matcode.com/mpress.htm</a><br>MPRESS mirror: <a href="https://www.autohotkey.com/mpress/">https://www.autohotkey.com/mpress/</a></p>
<p><strong>UPX</strong> official website (downloads and information): <a href="https://upx.github.io/">https://upx.github.io/</a></p>
<p><strong>Note :</strong> Bien que la compression du script exécutable empêche d'explorer simplement le code source du script avec un éditeur de texte brut comme Notepad ou un éditeur de ressource PE, elle n'empêche pas le code source d'être extrait par des outils spécifiques.</p>
<h3 id="information">Background Information</h3>
<p>In <span class="ver">[v1.1.33.10+]</span>, the following folder structure is supported, where the running version of <code>Ahk2Exe.exe</code> is in the first \Compiler directory shown below:</p>
<pre class="no-highlight">\AutoHotkey
AutoHotkeyA32.exe
AutoHotkeyU32.exe
AutoHotkeyU64.exe
\Compiler
Ahk2Exe.exe <em>; the master version of Ahk2Exe</em>
ANSI 32-bit.bin
Unicode 32-bit.bin
Unicode 64-bit.bin
\AutoHotkey v2.0-a135
AutoHotkey32.exe
AutoHotkey64.exe
\Compiler
\v2.0-beta.1
AutoHotkey32.exe
AutoHotkey64.exe</pre>
<p>The base file search algorithm runs for a short amount of time when Ahk2Exe starts, and works as follows:</p>
<p>Qualifying AutoHotkey .exe files and all .bin files are searched for in the compiler's directory, the compiler's parent directory, and any of the compiler's sibling directories with directory names that start with <code>AutoHotkey</code> or <code>V</code>, but do not start with <code>AutoHotkey_H</code>. The selected directories are searched recursively. Any AutoHotkey.exe files found are excluded, leaving files such as AutoHotkeyA32.exe, AutoHotkey64.exe, etc. plus all .bin files found. All .exe files that are included must have a name starting with <code>AutoHotkey</code> and a file description containing the word <code>AutoHotkey</code>, and must have a version of <code class="no-highlight">1.1.34+</code> or <code class="no-highlight">2.0-a135+</code>.</p>
<p>A version of the AutoHotkey interpreter is also needed (as a utility) for a successful compile, and one is selected using a similar algorithm. In most cases the version of the interpreter used will match the version of the base file selected by the user for the compile.</p>
<h2 id="cmd">Passer des Paramètres de Ligne de Commande à un Script</h2>
<p>Les scripts prennent en charge les paramètres de ligne de commande. La syntaxe est :</p>
<pre>AutoHotkey.exe [<i>Commutateurs</i>] [<i>Nom de Fichier du Script</i>] [<i>Paramètres du Script</i>]</pre>
<p>Et pour les scripts compilés, la syntaxe est :</p>
<pre>CompiledScript.exe [<i>Commutateurs</i>] [<i>Paramètres du Script</i>]</pre>
<p><strong>Commutateurs :</strong> Zéro ou plus des commutateurs suivants :</p>
<table class="info">
<tr><th>Commutateur</th><th>Signification</th><th class="wrap" abbr="Compiled?">Fonctionne en compilé?</th></tr>
<tr id="SlashF">
<td>/f ou /force</td>
<td>Exécuter inconditionnellement, et ignorer tout message d'avertissement. Ceci a le même effet que <a href="lib/_SingleInstance.htm">#SingleInstance Off</a>.</td>
<td>Oui</td>
</tr>
<tr id="SlashR">
<td>/r ou /restart</td>
<td>Indicate that the script is being restarted and should attempt to close a previous instance of the script (this is also used by the <a href="lib/Reload.htm">Reload</a> command, internally).</td>
<td>Oui</td>
</tr>
<tr id="ErrorStdOut">
<td>/ErrorStdOut<br><br>/ErrorStdOut=<em>Encoding</em></td>
<td>
<p>Send syntax errors that prevent a script from launching to the standard error stream (stderr) rather than displaying a dialog. Voir <a href="lib/_ErrorStdOut.htm">#ErrorStdOut</a> pour les détails. Ceci peut être combiné avec /iLib pour valider le script sans l'exécuter.</p>
<p><span class="ver">[v1.1.33+]:</span> An <a href="lib/FileEncoding.htm">encoding</a> can optionally be specified. For example, <code>/ErrorStdOut=UTF-8</code> encodes messages as UTF-8 before writing them to stderr.</p>
</td>
<td>Oui</td>
</tr>
<tr id="SlashDebug">
<td>/Debug</td>
<td><span class="ver">[AHK_L 11+] :</span> Se connecter à un client de débogage. Pour plus de détails, voir <a href="#idebug">Débogage Interactif</a>.</td>
<td>Non</td>
</tr>
<tr id="CPn">
<td>/CP<i>n</i></td>
<td>
<p><span class="ver">[AHK_L 51+] :</span> Remplace la page de code (codepage) par défaut utilisée pour lire les fichiers de script. Pour plus de détails, voir <a href="#cp">Codepage de Fichier de Script</a>.</p>
<p><span class="ver">[v1.1.33+]:</span> If "Default to UTF-8" is enabled in the installer, the ".ahk" file type is registered with a command line including <code>/CP65001</code>. This causes all scripts launched through the shell (Explorer) to default to UTF-8 in the absence of a UTF-16 byte order mark. Scripts launched by running AutoHotkey.exe directly still default to <code>CP0</code>, as the <code>/CP65001</code> switch is absent.</p>
</td>
<td>Non</td>
</tr>
<tr>
<td>/iLib <em>"FichierSortie"</em></td>
<td>
<p><span class="ver">[v1.0.47+] :</span> AutoHotkey charge le script mais ne l'exécute pas. Pour chaque fichier de script auto-inclus via <a href="Functions.htm#lib">le mécanisme de bibliothèque</a>, deux lignes sont écrites dans le fichier spécifié par <em>FichierSortie</em>. Ces lignes sont écrites dans la syntaxe suivante, où <em>DossierBibli</em> est le chemin complet du dossier de la bibliothèque et <em>FichierBibli</em> est le nom de fichier de la bibliothèque :</p>
<pre>#Include DossierBibli\
#IncludeAgain DossierBibli\FichierBibli.ahk</pre>
<p>Si le fichier de sortie existe, il est remplacé. <em>FichierSortie</em> peut être <code>*</code> pour écrire la sortie dans stdout.</p>
<p>Si le script contient des erreurs de syntaxe, le fichier de sortie peut être vide. Le code de sortie du processus peut être utilisé pour détecter ce cas ; s'il y a une erreur de syntaxe, le code de sortie est 2. Le commutateur /ErrorStdOut peut être utilisé pour supprimer ou capturer le message d'erreur.</p>
</td>
<td>Non</td>
</tr>
<tr id="SlashInclude">
<td>/include <em>"IncFile"</em></td>
<td>
<p><span class="ver">[v1.1.34+]:</span> <a href="lib/_Include.htm">Includes</a> a file prior to the main script. Only a single file can be included by this method. When the script is <a href="lib/Reload.htm">reloaded</a>, this switch is automatically passed to the new instance.</p>
</td>
<td>Non</td>
</tr>
<tr id="SlashScript">
<td>/script</td>
<td>
<p><span class="ver">[v1.1.34+]:</span> When used with a compiled script based on an .exe file, this switch causes the program to ignore the main embedded script. This allows a compiled script .exe to execute external script files or embedded scripts other than the main one. Other switches not normally supported by compiled scripts can be used but must be listed to the right of this switch. Par exemple :</p>
<pre class="no-highlight">CompiledScript.exe /script /ErrorStdOut MyScript.ahk "Script's arg 1"</pre>
<p>If the current executable file does not have an embedded script, this switch is permitted but has no effect.</p>
<p>This switch is not supported by compiled scripts which are based on a .bin file.</p>
<p>See also: <a href="#ahk2exe-base">Base Executable File (Ahk2Exe)</a></p>
</td>
<td>N/A</td>
</tr>
</table>
<p id="defaultfile"><strong>Nom de Fichier du Script :</strong> Ceci peut être omis si il n'y a pas de <em>Paramètres de Script</em>. Si omis (par exemple si AutoHotkey est exécuté directement depuis le menu Démarrer), le programme cherche un fichier de script appelé <code><i>AutoHotkey</i>.ahk</code> dans les endroits suivants, dans cet ordre :</p>
<ul>
<li>Le dossier qui contient l'<a href="Variables.htm#AhkPath">exécutable AutoHotkey</a>.</li>
<li>Le dossier <a href="Variables.htm#MyDocuments">Documents</a> de l'utilisateur actuel.</li>
</ul>
<p>Le nom de fichier <code><i>AutoHotkey</i>.ahk</code> dépend du nom de l'exécutable utilisé pour lancer le script. Par exemple, en renommant AutoHotkey.exe en MonScript.exe, le programme cherchera <code>MonScript.ahk</code>. Si AutoHotkeyU32.exe est lancé sans paramètres, il cherchera AutoHotkeyU32.ahk.</p>
<p>Note : Dans de vieilles versions avant la <a href="AHKL_ChangeLog.htm#L51">révision 51</a>, le programme cherchait AutoHotkey.ini dans le répertoire de travail ou AutoHotkey.ahk dans Mes Documents.</p>
<p><span class="ver">[v1.1.17+] :</span> Indiquer un astérisque (*) pour le nom de fichier pour que le texte du script soit lu depuis l'entrée standard (stdin). Pour un exemple, voir <a href="lib/Run.htm#ExecScript">ExecScript()</a>.</p>
<p><span class="ver">[v1.1.34+]:</span> If the current executable file has <a href="Program.htm#embedded-scripts">embedded scripts</a>, this parameter can be an asterisk followed by the resource name or ID of an embedded script. For compiled scripts (i.e. if an embedded script with the ID #1 exists), this parameter must be preceded by the <code>/script</code> switch.</p>
<p id="cmd_args"><strong>Script Parameters:</strong> The string(s) you want to pass into the script, with each separated from the next by one or more spaces. Tout paramètre contenant des espaces doit être entouré de guillemets. If you want to pass an empty string as a parameter, specify two consecutive quotation marks. Un guillemet littéral peut être passé en le précédant d'un antislash (\"). En conséquence, tout antislash terminant un paramètre entre guillemets (comme "C:\Mes Documents<span class="red">\"</span>) est traité comme un guillemet littéral (c'est-à-dire, le script recevrait la chaîne de caractères C:\My Documents<span class="red">"</span>). Pour enlever de tels guillemets, utiliser <code><a href="lib/StringReplace.htm">StringReplace</a>, 1, 1, <span class="red">"</span>,, All</code>.</p>
<p><span class="ver">[v1.1.27+] :</span> Les paramètres d'entrée, si présents, sont stockés sous forme de tableau dans la variable intégrée <strong>A_Args</strong>, et peuvent être obtenus en utilisant la <a href="Objects.htm#Usage_Simple_Arrays">syntaxe de tableau</a>. <code>A_Args[1]</code> contient le premier paramètre. L'exemple suivant termine le script quand un nombre insuffisant de paramètres lui est passé :</p>
<pre>if A_Args.Length() < 3
{
MsgBox % "Ce script nécessite au moins 3 paramètres mais n'en a reçu que " A_Args.Length() "."
ExitApp
}</pre>
<p>Si le nombre de paramètres passés à un script est variable (par exemple l'utilisateur glisse-dépose un ensemble de fichiers sur un script), l'exemple suivant peut être utilisé pour les extraire un par un :</p>
<pre>for n, param in A_Args <em>; Pour chaque paramètre :</em>
{
MsgBox Le paramètre numéro %n% est %param%.
}
</pre>
<p>Si les paramètres sont des noms de fichier, l'exemple suivant peut être utilisé pour les convertir en leurs noms longs avec casse corrigée (tel que stocké dans le système de fichier), comprenant le chemin complet/absolu :</p>
<pre>for n, CheminDonné in A_Args <em>; Pour chaque paramètre (ou fichier déposé sur un script):</em>
{
Loop Files, %CheminDonné%, FD <em>; Include files and directories.</em>
CheminLong := A_LoopFileFullPath
MsgBox Le chemin long avec casse corrigée du fichier`n%CheminDonné%`nest :`n%CheminLong%
}</pre>
<p><strong>Problème connu :</strong> déposer des fichiers sur un script .ahk peut échouer à fonctionner correctement si les noms (courts) 8-dot-3 ont été désactivé dans un système de fichier NTFS. Une solution est de <a href="#ahk2exe">compiler</a> le script puis de déposer les fichiers sur l'EXE résultant.</p>
<p id="cmd_args_old"><strong>Dépassé :</strong> Les paramètres de ligne de commande sont aussi stockés dans les <a href="Variables.htm">variables</a> %1%, %2%, et ainsi de suite, comme dans les versions précédant <span class="ver">[v1.1.27]</span>. De plus, %0% contient le nombre de paramètres passés (0 si aucun). Toutefois, ces variables ne peuvent pas être utilisées directement dans une expression puisqu'elles seraient interprétées comme des nombres plutôt que comme des variables. L'exemple suivant termine le script quand un nombre insuffisant de paramètres lui est passé :</p>
<pre>if 0 < 3 <em>; Le côté gauche d'une <a href="lib/IfEqual.htm">instruction if non-expression</a> est toujours le nom d'une variable.</em>
{
MsgBox Ce script nécessite au moins 3 paramètres d'entrée mais n'en a reçu que %0%.
ExitApp
}</pre>
<p>Si le nombre de paramètres passés à un script est variable (par exemple l'utilisateur glisse-dépose un ensemble de fichiers sur un script), l'exemple suivant peut être utilisé pour les extraire un par un :</p>
<pre>Loop, %0% <em>; Pour chaque paramètre :</em>
{
param := %A_Index% <em>; Récupérer le contenu de la variable dont le nom est contenu dans A_Index.</em>
MsgBox, 4,, Le paramètre numéro %A_Index% est %param%. Continuer ?
IfMsgBox, No
break
}</pre>
<p>Si les paramètres sont des noms de fichier, l'exemple suivant peut être utilisé pour les convertir en leurs noms longs avec casse corrigée (tel que stocké dans le système de fichier), comprenant le chemin complet/absolu :</p>
<pre>Loop %0% <em>; Pour chaque paramètre (ou fichier déposé sur un script):</em>
{
CheminDonné := %A_Index% <em>; Récupérer le contenu de la variable dont le nom est contenu dans A_Index.</em>
Loop %CheminDonné%, 1
CheminLong := A_LoopFileLongPath
MsgBox Le chemin long avec casse corrigée du fichier`n%CheminDonné%`nest :`n%CheminLong%
}</pre>
<h2 id="cp">Codepage de Fichier de Script <span class="ver">[AHK_L 51+]</span></h2>
<p>In order for non-ASCII characters to be read correctly from file, the encoding used when the file was saved (typically by the text editor) must match what AutoHotkey uses when it reads the file. If it does not match, characters will be decoded incorrectly. AutoHotkey uses the following rules to decide which encoding to use:</p>
<ul>
<li>Si le fichier commence par un indicateur d'ordre des octets (Byte Order Mark) UTF-8 ou UTF-16 (LE), le codepage approprié est utilisé et le commutateur <a href="#CPn">/CP<i>n</i></a> est ignoré.</li>
<li>Si le commutateur <a href="#CPn">/CP<i>n</i></a> est passé en ligne de commande, le codepage <i>n</i> est utilisé. For a list of possible values, see <a href="https://docs.microsoft.com/en-au/windows/win32/intl/code-page-identifiers">Code Page Identifiers</a>.
<p class="note"><strong>Note:</strong> The "Default to UTF-8" option in the AutoHotkey <span class="ver">[v1.1.33+]</span> installer adds <code>/CP65001</code> to the command line for all scripts launched via the shell (Explorer).</p></li>
<li>Dans tous les autres cas, le codepage par défaut du système ANSI est utilisé.</li>
</ul>
<p>A noter que ceci ne s'applique qu'aux fichiers chargés par AutoHotkey, pas aux opérations d'entrée-sortie effectuées sur des fichiers au sein du script même. <a href="lib/FileEncoding.htm">FileEncoding</a> contrôle l'encodage par défaut des fichiers lus ou écrits par le script, tandis que <a href="lib/IniRead.htm">IniRead</a> et <a href="lib/IniWrite.htm">IniWrite</a> utilisent toujours UTF-16 ou ANSI.</p>
<p>Comme tout le texte est converti (si nécessaire) vers le <a href="Compat.htm#Format">format natif de chaîne de caractères</a>, les caractères qui sont invalides ou n'existent pas dans le codepage natif sont remplacés par : en ANSI '?' ou en Unicode '�'. Dans les constructions (builds) Unicode, ceci ne devrait arriver qu'en cas d'erreur d'encodage dans le fichier de script ou si les codepages utilisés pour la sauvegarde et le chargement du fichier sont différents.</p>
<p><a href="lib/RegWrite.htm">RegWrite</a> peut être utilisée pour définir le codepage par défaut pour les scripts lancés depuis l'explorateur (par exemple en double-cliquant un fichier) :</p>
<pre><em>; Décommenter la ligne appropriée ci-dessous ou les laisser toutes
; commentées pour revenir au codepage par défaut de la construction ; actuelle. Modifier selon le besoin :
; codepage := 0 ; Codepage par défaut du système ANSI
; codepage := 65001 ; UTF-8
; codepage := 1200 ; UTF-16
; codepage := 1252 ; ANSI Latin 1; Europe de l'Ouest (Windows)</em>
if (codepage != "")
codepage := " /CP" . codepage
cmd="%A_AhkPath%"%codepage% "`%1" `%*
key=AutoHotkeyScript\Shell\Open\Command
if A_IsAdmin <em>; Modifer pour tous les utilisateurs.</em>
RegWrite, REG_SZ, HKCR, %key%,, %cmd%
else <em>; Modifer pour l'utilisateur actuel seulement.</em>
RegWrite, REG_SZ, HKCU, Software\Classes\%key%,, %cmd%</pre>
<p>Ceci suppose que AutoHotkey a déjà été installé. Le résultat peut être loin d'être idéal dans le cas contraire.</p>
<h2 id="debug">Déboguer un Script</h2>
<p>Des commandes comme <a href="lib/ListVars.htm">ListVars</a> et <a href="lib/Pause.htm">Pause</a> peuvent aider à déboguer script. Par exemple, les deux lignes suivantes, insérées temporairement à des endroits choisis soigneusement, crééent des "points d'arrêt" dans le script :</p>
<pre>ListVars
Pause</pre>
<p>Quand le script rencontre ces deux lignes, il affiche le contenu actuel de toutes les variables pour inspection. Une fois prêt à reprendre l'exécution, la pause du script peut être enlevée via le menu fichier ou zone de notification. Le script continuera ensuite jusqu'à atteindre le prochain "point d'arrêt" (s'il y en a un).</p>
<p>Il est en général mieux d'insérer ces "points d'arrêt" à des positions où la fenêtre active n'a pas d'influence sur le script, comme par exemple immédiatement avant une commande WinActivate. Ceci permet au script de reprendre correctement ses opérations quand la pause est enlevée.</p>
<p>Les commandes suivantes sont aussi utiles pour le débogage : <a href="lib/ListLines.htm">ListLines</a>, <a href="lib/KeyHistory.htm">KeyHistory</a>, et <a href="lib/OutputDebug.htm">OutputDebug</a>.</p>
<p>Certaines erreurs courantes, comme des fautes de frappes et des déclarations manquantes de "globales", peuvent être détectées en <a href="lib/_Warn.htm">activant les avertissements</a>.</p>
<h3 id="idebug">Débogage Interactif <span class="ver">[AHK_L 11+]</span></h3>
<p>Le débogage interactif est possible avec un <a href="AHKL_DBGPClients.htm">client DBGp</a> pris en charge. Typiquement, les actions suivantes sont possibles :</p>
<ul>
<li>Ajouter et enlever des points d'arrêt sur des lignes - met en pause l'exécution quand un <a href="https://en.wikipedia.org/wiki/Breakpoint">point d'arrêt</a> est atteint.</li>
<li>Exécuter le code ligne par ligne - entrer dans, survoler ou sortir de fonctions et sous-programmes.</li>
<li>Inspecter toutes les variables ou une variable en particulier.</li>
<li>Voir la pile des sous-programmes et fonctions en cours d'exécution.</li>
</ul>
<p>Note that this functionality is disabled for compiled scripts which are <a href="#ahk2exe-base">based on a BIN file</a>. For compiled scripts based on an EXE file, /debug must be specified after <a href="#SlashScript">/script</a>.</p>
<p>Pour activer le débogage interactif, commencer par lancer un client débogueur pris en charge puis exécuter le script avec le commutateur de ligne de commande <b>/Debug</b>.</p>
<pre class="Syntax">AutoHotkey.exe /Debug<span class="optional">=<i>SERVEUR</i>:<i>PORT</i></span> ...</pre>
<p><i>SERVEUR</i> et <i>PORT</i> peuvent être omis. Par exemple, les lignes suivantes sont équivalentes :</p>
<pre class="no-highlight">AutoHotkey /Debug "monscript.ahk"
AutoHotkey /Debug=localhost:9000 "monscript.ahk"</pre>
<p id="debug_attach"><span class="ver">[AHK_L 59+] :</span> Pour attacher le débogueur à un script déjà en cours d'exécution, lui envoyer un message comme montré ci-dessous :</p>
<pre>CheminScript := "" <em>; METTRE ICI LE CHEMIN COMPLET DU SCRIPT</em>
DetectHiddenWindows On
if WinExist(CheminScript " ahk_class AutoHotkey")
<em>; Paramètres facultatifs :
; wParam = l'adresse IPv4 du client débogueur, comme entier 32-bit.
; lParam = le port sur lequel le client débogueur écoute.</em>
PostMessage DllCall("RegisterWindowMessage", "str", "AHK_ATTACH_DEBUGGER")
</pre>
<p>Une fois le client débogueur connecté, il peut se détacher sans terminer le script en envoyant la commande DBGp "detach".</p>
<h2 id="Script_Showcase">Vitrine de Scripts</h2>
<p>Voir <a href="scripts/">cette page</a> pour des scripts utiles.</p>
</body>
</html>