-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAHKL_ChangeLog.htm
1784 lines (1561 loc) · 139 KB
/
AHKL_ChangeLog.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
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE HTML>
<html lang="nl">
<head>
<title>Changes & New Features | AutoHotkey</title>
<meta name="description" content="Changes and new features introduced by the current branch of AutoHotkey development (a.k.a. AutoHotkey_L)." />
<meta name="ahk:equiv-v2" content="ChangeLog.htm" />
<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>Changes & New Features</h1>
<p>Changes and new features introduced by the current branch of AutoHotkey development (a.k.a. AutoHotkey_L) are listed below.</p>
<p>For older changes, see <a href="ChangeLogHelp.htm">Archived Changes</a>.</p>
<!--new revisions go here-->
<h2 id="v1.1.36.01">1.1.36.01 - December 2, 2022</h2>
<p>Fixed undefined behaviour for Switch numeric comparisons.</p>
<h2 id="v1.1.36.00">1.1.36.00 - December 1, 2022</h2>
<p>Added <a href="commands/VerCompare.htm">VerCompare()</a>.</p>
<p>Added support for <a href="https://github.com/Lexikos/AutoHotkey_L/commit/19924b473999d79d86ae5f0159d0311600b68efc">breakpoint exceptions</a> via DBGp.</p>
<p>Extended <a href="commands/_Requires.htm">#Requires</a> to support operators for range checks (<code><</code> <code><=</code> <code>></code> <code>>=</code> <code>=</code>) and additional keywords: <code>Unicode</code>, <code>ANSI</code>, <code>32-bit</code>, <code>64-bit</code>.</p>
<p>Added CompanyName to the version information in AutoHotkey.exe, which may work around a Windows 10 bug where the program would not appear in Open With.</p>
<p>Changed Switch/Case to perform non-numeric comparison when the switch or case expression is a lone literal string, such as <code>"00"</code>, and documented comparison behaviour which was previously undocumented.</p>
<p>Fixed some inconsistencies with integer property names via IDispatch.</p>
<ul>
<li>Negative values always being considered non-numeric.</li>
<li>Positive values losing formatting, such as leading zeroes.</li>
</ul>
<p>Fixed potential crashes when inspecting a ComObject via DBGp after using ComObjConnect.</p>
<p>Fixed FileAppend to treat a blank <em>Encoding</em> as omitted.</p>
<p>Fixed version comparisons to ignore numeric build info; e.g. 1.1.35.00+1+abcdef (1 is the number of commits since 1.1.35.00).</p>
<p>Fixed <code>FileCreateDir X\Y\</code> (with trailing slash) failing to create X [broken by v1.1.35.00].</p>
<h2 id="v1.1.35.00">1.1.35.00 - October 30, 2022</h2>
<p>Changed GroupActivate and GroupClose to behave more intuitively:</p>
<ul>
<li>Evaluate windows against the window group as a whole, not individual window specifications.</li>
<li>When GroupClose indirectly causes another matching window to activate, leave it active even if it isn't matched by the same window specification.</li>
</ul>
<p>Contributions by jeeswg (pull requests #186, #235, #240, #249, #273, #274):</p>
<ul>
<li>Backported operators !==, >>> and >>>= from v2.</li>
<li>Backported A_InitialWorkingDir from v2.</li>
<li>Backported File.Handle from v2.</li>
<li>Backported A_Clipboard from v2.</li>
<li>Backported IsSet() from v2.</li>
</ul>
<strong>Bug-fixes:</strong>
<p>Fixed a spelling error in the #Warn Unreachable message.</p>
<p>Fixed FileCreateDir handling of paths containing ".." or "/".</p>
<p>Fixed some issues with FileSelectFile's RootDir\Filename parameter:</p>
<ul>
<li>Filename not being used when RootDir is a badly formatted CLSID.</li>
<li>Undefined behaviour for long paths when GetShortPathName fails (such as when long path awareness is disabled or there's a default filename which isn't an existing file).</li>
</ul>
<p>Fixed FileSetTime to set A_LastError if it finds no files.</p>
<p>Fixed EnvAdd/+= losing precision when adding 115,292,150,461+ seconds.</p>
<p>Fixed the keyboard hook reinserting a suppressed dead key when Enter is pressed, such as in the sequence <code>`o{Enter}</code> when the following is true:</p>
<ul>
<li>A separate script has suppressed "ò" due to <code>:?*:ò::</code>.</li>
<li>The current process also has active hotstrings.</li>
<li>The other process installed its hook last.</li>
</ul>
<p>Fixed ControlGet List "Selected" option repeating output on x64 when the target is 32-bit.</p>
<p>Fixed stack corruption for ControlGet List "Count" options.</p>
<h2 id="v1.1.34.04">1.1.34.04 - August 23, 2022</h2>
<p>Fixed callback functions not being included in the debugger's call stack.</p>
<p>Fixed MsgBox timeout reported as "OK" if shown within 100ms of startup.</p>
<p>Fixed Edit control to ignore <code>+WantTab</code> while <code>+ReadOnly</code> is in effect.</p>
<p>Fixed property_get returning a local var when <code>-d</code> should prevent it.</p>
<p>Fixed RegRead to support REG_MULTI_SZ values containing empty items.</p>
<p>Fixed <code>x[,y]:=z</code> invoking undefined behaviour.</p>
<h2 id="v1.1.34.03">1.1.34.03 - June 5, 2022</h2>
<p>Fixed double backspacing of supplementary Unicode characters in hotstrings.</p>
<p>Fixed <code>a::</code> not firing if <code>a up::</code> and <code>a & b::</code> are present.</p>
<p>Fixed MinSize/MaxSize being applied incorrectly before the first call to Gui Show.</p>
<p>Fixed the hook thread getting stuck in an infinite loop if an InputHook has been restarted too soon after being stopped.</p>
<p>Fixed crashes or undefined behaviour when a blank parameter is passed to FileCopy, FileMove, FileCopyDir, FileMoveDir or FileRemoveDir.</p>
<p>Fixed dead keys erroneously being reapplied by the keyboard hook after the final character of a hotstring is suppressed (e.g. for <code>:?*:ò::ó</code>).</p>
<h2 id="v1.1.34.02">1.1.34.02 - May 13, 2022</h2>
<p>Fixed bugs introduced by v1.1.34.00:</p>
<ul>
<li>Fixed command line args for embedded script #1.</li>
<li>Fixed <code>Alt::</code>, <code>Ctrl::</code> and <code>Shift::</code> behaving like normal keys, instead of firing on release as documented.</li>
<li>Fixed <code>~a & b::</code> (when disabled with #If) causing <code>a::</code> to fire on key-up even after activating some other combo.</li>
</ul>
<h2 id="v1.1.34.01">1.1.34.01 - May 7, 2022</h2>
<p>Fixed bugs introduced by v1.1.34.00:</p>
<ul>
<li><code>a up::</code> firing on press rather than release if it is the first hotkey and <code>~a & b::</code> is present.</li>
<li><code>a::</code> not suppressing the key if <code>~a & b::</code> is also present, unless <code>a::</code> is the first hotkey.</li>
<li><code>CapsLock::</code> not working when <code>CapsLock & x::</code> is also present, and likewise for NumLock and ScrollLock.</li>
</ul>
<h2 id="v1.1.34.00">1.1.34.00 - May 5, 2022</h2>
<p>Added the capability to use AutoHotkey.exe as the base for compiled scripts, allowing compiled scripts to execute external files when passed the <code>/script</code> command-line switch.</p>
<p>Added the capability to implicitly include code at the top of every script, either by embedding a resource within AutoHotkey.exe or by using the /include command-line switch.</p>
<p>Enabled the use of Menu NoMainWindow/MainWindow in uncompiled scripts.</p>
<p>Changed <code>~x & y::</code> to not affect suppression of <em>x</em> when disabled by #If.</p>
<p>Enhanced FileCopyDir to permit the source directory to be a zip file, if supported by the OS, in which case its contents are extracted.</p>
<p>Fixed execution of multiple run-once timers in the same tick [broken by v1.1.33.11].</p>
<p>Fixed ToolTip positioning/sizing bugs.</p>
<ul>
<li>Attempting to position a tooltip overlapping the taskbar caused it to appear at the top of the screen instead, on Windows 10 and 11.</li>
<li>Tooltips were limited by the primary screen's width even when they should appear on a secondary screen, and this could prevent them from appearing on the appropriate screen (when they're too wide).</li>
<li>The maximum width was effectively <code>A_ScreenDPI/96</code> times larger than it should be due to OS behaviour; this is now accounted for.</li>
</ul>
<p>Optimized ToolTip for cases where the text isn't changing, to reduce flicker and speed it up.</p>
<p>Fixed key-up hotkeys failing to execute if they are turned on after (but not before) the key is pressed down, and that key is also used as a custom prefix key with the tilde prefix (e.g. activating <code>~a & b::</code> interferes with <code>a up::</code>).</p>
<p>Fixed custom combo hotkeys where the prefix key causes a hook reset, such as <code>~RButton & WheelUp::</code> when <code>RButton::</code> enables or disables the script's only keyboard hook hotkey.</p>
<h2 id="v1.1.33.11">1.1.33.11 - April 20, 2022</h2>
<p>Fixed <code>Format(n)</code> returning blank when <code>n</code> is a pure numeric expression.</p>
<p>Fixed the debugger's inability to query <code>obj.<base>.<base></code>.</p>
<p>Changed debugger step/breakpoints to slip over Try/Catch/Finally/Case.</p>
<p>Fixed <code>Switch {</code> incorrectly raising a load-time error.</p>
<p>Fixed debugger stack_get reporting incorrect line after OnError.</p>
<p>Fixed debugger stack_get reporting incorrect line for auto-execute thread.</p>
<p>Fixed auto-env retrieval and A_ComVar to safely allow for variables larger than the official limit [PR #259 from mikeblas].</p>
<p>Fixed A_EventInfo for mouse wheel hotkeys [broken by v1.1.33.05].</p>
<p>Fixed ControlClick to convert coordinates correctly for wheel messages.</p>
<p>Fixed the IDispatch implementation for AutoHotkey objects to preserve case for property names.</p>
<p>Fixed #Warn StdOut to default to codepage 0 when /ErrorStdOut is not used.</p>
<p>Fixed crashes when a timer's __delete() meta-function deletes the next timer.</p>
<h2 id="v1.1.33.10">1.1.33.10 - August 29, 2021</h2>
<p>Fixed loading of JPG/GIF files which are already open for reading.</p>
<p>Fixed misidentification of digits/xdigits by if-var-is.</p>
<p>Added a safety check for ControlGet Selected in case it is used with a non-Edit control.</p>
<p>Fixed variables being set to NULL in certain rare cases, causing crashes. The only confirmed case being when a string longer than 63 characters is returned from a function and assigned to a variable while AutoHotkey is running as a Windows store app.</p>
<p>Fixed InputHook callbacks failing after input is stopped and restarted.</p>
<h2 id="v1.1.33.09">1.1.33.09 - May 8, 2021</h2>
<p>Fixed crash on load when an AltTab action is used in a key-up/down pair.</p>
<p>Fixed garbage error text when the main script file cannot be opened.</p>
<p>Removed "Error at line 0" from error messages which appear before the first line is read.</p>
<p>Fixed focus resetting when a minimized GUI is restored.</p>
<p>Fixed focus not saving when a GUI is minimized with Gui Show.</p>
<h2 id="v1.1.33.08">1.1.33.08 - April 23, 2021</h2>
<p>Fixed non-zero SendLevel events erroneously being suppressed in cases not covered by the v1.1.33.07 fix:</p>
<ul>
<li>When there's a matching context-sensitive hotkey with a higher #InputLevel and no enabled global variant.</li>
<li>When there's no matching key-down hotkey, but there's a key-up hotkey with a higher #InputLevel.</li>
</ul>
<h2 id="v1.1.33.07">1.1.33.07 - April 21, 2021</h2>
<p>Fixed tray icon freezing and becoming blurry after screen DPI changes.</p>
<p>Fixed hotkeys disabled by #InputLevel erroneously suppressing keys.</p>
<h2 id="v1.1.33.06">1.1.33.06 - March 14, 2021</h2>
<p>Fixed a bug introduced by v1.1.33.05 were certain hotkeys were ignored. This included joystick hotkeys and all hotkeys to which #MaxThreadsBuffer or the B option is applied.</p>
<h2 id="v1.1.33.05">1.1.33.05 - March 10, 2021</h2>
<p>Fixed bugs with hotkey variants having different #InputLevels.</p>
<ul>
<li>Hotkey variants executing despite send level being too low, due to a global variant having lower #InputLevel.</li>
<li>Hotkey variants not executing because a previous variant was ineligible due to #InputLevel.</li>
</ul>
<p>Fixed Ctrl/Shift/Alt (without L/R) as hook hotkeys.</p>
<h2 id="v1.1.33.04">1.1.33.04 - March 2, 2021</h2>
<p>Removed dependency on the POPCNT instruction, which is not supported by old CPUs (e.g. Core 2).</p>
<h2 id="v1.1.33.03">1.1.33.03 - March 1, 2021</h2>
<p>Fixed crashing when an empty SafeArray is enumerated.</p>
<p>Fixed height to not auto-expand for Button/Checkbox/Radio with -Wrap.</p>
<p>Fixed WM_DESTROY bypassing release of objects in global/static vars.</p>
<p>Fixed WinMenuSelectItem second-attempt matching to handle & correctly. Specifically, items with actual text like "a && b" which appear as "a & b" will now match "a & b" instead of "a b".</p>
<p>Fixed breakpoint on Case/Default line breaking at end of previous case.</p>
<p>Changed SoundBeep to ignore duration if negative, instead of wrapping around to a large positive value.</p>
<p>Fixed mouse hotkeys with ! to mask Alt-up after key-repeat if possible.</p>
<p>Fixed several issues with overlapping hotkeys.</p>
<ul>
<li>Key-up hotkeys firing incorrectly because they were paired with a hotkey with overlapping but different requirements, such as <code><^a up</code> firing for RCtrl+A because it was paired with <code>^a</code>; or <code>*^c up</code> firing for Shift+C because it was paired with <code>*+c</code>, and both can fire for Ctrl+Shift+C.</li>
<li>Unpredictable prioritization of hotkeys with the same modifiers but different L/R variants, or different modifiers when neither one is a perfect subset of the other. Priority was affected by order of definition to a degree but shifted unpredictably when hotkeys were added or removed.</li>
</ul>
<h2 id="v1.1.33.02">1.1.33.02 - July 17, 2020</h2>
<p>Fixed InputHook.EndKey to prefer any vk over sc000.</p>
<p>Fixed <code>InputHook.KeyOpt("{sc000}", flags)</code>.</p>
<p>Fixed #Warn Unreachable flagging Case/Default as unreachable.</p>
<h2 id="v1.1.33.01">1.1.33.01 - July 13, 2020</h2>
<p>Fixed modifier key-up hotkeys like <code>LShift up::</code> not suppressing key-up unless a corresponding key-down hotkey is defined.</p>
<p>Fixed icons loaded from DLL/EXE not using the closest matching size if it's first in the icon group [broken by v1.1.33.00].</p>
<p>Fixed <code>a up::</code> erroneously taking precedence over <code>b & a up::</code> if <code>a::</code> is defined but not <code>b & a::</code>.</p>
<p>Fixed <code>b & a up::</code> not suppressing <code>a</code> when <code>a::</code> is defined but disabled by #If and <code>b & a::</code> is not defined.</p>
<h2 id="v1.1.33.00">1.1.33.00 - June 30, 2020</h2>
<p>Added <a href="commands/_ErrorStdOut.htm">#ErrorStdOut</a> <em>Encoding</em> parameter.</p>
<p>Added <a href="Scripts.htm#ErrorStdOut">/ErrorStdOut=<em>Encoding</em></a> command line switch.</p>
<p>Added <a href="commands/_Warn.htm#Unreachable">#Warn Unreachable</a> (warning mode).</p>
<p>Added <a href="commands/_Requires.htm">#Requires AutoHotkey v<em>Version</em></a> (directive).</p>
<p>Added detection of program-terminating SEH exceptions, to display an error dialog.</p>
<p>Implemented numerous improvements to Ahk2Exe developed by fincs, TAC109, Joe DF, and Ben Allred.</p>
<p>Fixed Send causing unwanted hotkey buffering.</p>
<p>Fixed a possible bug where Input causes undefined behaviour. [PR #159 from Helgef] </p>
<p>Fixed WinKill to actually do more than WinClose.</p>
<p>Fixed A_WinDir to always return the system Windows directory.</p>
<p>Fixed FileGetShortcut/FileCreateShortcut to not increment/decrement negative icon indices (resource IDs).</p>
<p>Fixed InputBox Locale option to not focus the Cancel button.</p>
<p>Fixed menu bar keyboard shortcuts not working when GUI has no controls.</p>
<p>Fixed LoadPicture to use 256x256 graphic when available in a DLL/EXE.</p>
<p>Fixed DBGp stderr copy mode to not suppress error dialogs.</p>
<p>Fixed ControlGet Line setting ErrorLevel=1 when line is just empty.</p>
<h2 id="v1.1.32.00">1.1.32.00 - November 24, 2019</h2>
<p>Changed commands and functions with a WinTitle parameter to treat cloaked windows as hidden.</p>
<p>Added support for reverse PixelSearch in fast mode. [PR #156 from changyuheng]</p>
<p>Added InputHook OnKeyUp callback.</p>
<p>Fixed GroupDeactivate to exclude the Desktop on Windows 10 (and possibly 8).</p>
<p>Fixed Switch treating strings as always true.</p>
<p>Fixed A_PriorKey being blank after Unicode characters are sent.</p>
<p>Fixed WinActivate to not assume NULL foreground window == taskbar.</p>
<p>Fixed <code>Send {Del}</code> not restoring AltGr after releasing it.</p>
<p>Fixed vk13 and sc045 as remap destination keys.</p>
<p>Removed unnecessary checks for Control and Sleep in one-line hotkeys.</p>
<p>Removed obsolete Windows 9x/NT4 support code and performed other maintenance.</p>
<h2 id="v1.1.31.01">1.1.31.01 - October 14, 2019</h2>
<p>Fixed <code>Switch %v%</code>, <code>Case %v%</code> and <code>Throw %v%</code>.</p>
<p>Fixed <code>Case 2,,:</code> to show an error message rather than crash.</p>
<p>Fixed AltTab hotkeys [broken by v1.1.31.00].</p>
<p>Fixed hotstring X option to permit whitespace after <code>::</code>.</p>
<p>Fixed single-line hotkeys to prohibit multi-line statements such as IF.</p>
<h2 id="v1.1.31.00">1.1.31.00 - September 28, 2019</h2>
<p>Added <a href="commands/Switch.htm">Switch</a>.</p>
<p>Added <a href="commands/InputHook.htm">InputHook</a>.</p>
<p>Added <code>Locale</code> option to enable InputBox to use locale-specific button names. [PR #143 from Ragnar-F]</p>
<p>Improved support for <a href="misc/LongPaths.htm">long paths</a>.</p>
<p>General hotkey improvements:</p>
<ul>
<li>Improved support for overlapping hotkeys like <code><^a</code> and <code>^a</code> with <code>#If</code>. If all variants of a hotkey are disabled by #If, a more general hotkey may be triggered. In other words, disabling the hotkeys with #If should now behave more like turning them off or removing them from the script.</li>
<li>Improved detection of incorrect modifier key state by the hook.</li>
<li>Fixed wildcard hotkey selection to ignore modifier changes made by Send.</li>
</ul>
<p>AltGr bug-fixes:</p>
<ul>
<li>Fixed hotkeys misfiring after <code>Send <i>xy</i></code> where <i>x</i> requires AltGr.</li>
<li>Fixed an unnecessary LCtrl being sent after <code>Send <i>x</i></code> where <i>x</i> requires AltGr.</li>
<li>Fixed AltGr detection on Unicode 32-bit builds when OS is 64-bit.</li>
<li>Fixed sending of AltGr combinations while RCtrl is down.</li>
</ul>
<p>Shift-numpad bug-fixes:</p>
<ul>
<li>Fixed interaction between Send and Shift-numpad causing Shift to stick. This fixes intermittent issues with hotkeys like <code>Numpad1::Send +1</code>.</li>
<li>Optimized detection of fake Shift generated by system numpad handling.</li>
<li>Fixed fake RShift being considered physical, inconsistent with LShift.</li>
</ul>
<p>Fixed Slider <code>+TickInterval</code> to take effect even if <code>Range</code> is not set.</p>
<p>Fixed Slider <code>+TickInterval0</code> to set interval to 0, disabling ticks.</p>
<p>Fixed menu and GUI events causing CPU-maxing loops in some cases. Specifically, when a modal message loop is running and the script is uninterruptible, menu and GUI event messages were repeatedly re-posted. These are now discarded, as they can't be handled or kept in the queue. This is consistent with hotkeys, etc.</p>
<p>Fixed DllCall critical errors to always exit, ignoring OnExit result.</p>
<p>Fixed <code>ExitApp 2</code> bypassing release of objects in global/static vars.</p>
<p>Changed ComObjCreate to use CLSIDFromProgID for non-GUID strings. This fixes <code>ComObjCreate("Microsoft.Windows.ActCtx")</code> and possibly others which aren't in the registry but work with VBScript and JScript.</p>
<h2 id="v1.1.30.03">1.1.30.03 - April 4, 2019</h2>
<p>Fixed debugger context_get triggering #Warn UseUnset.</p>
<p>Fixed straight modifier hotkeys such as Shift:: (broken by v1.1.30.02).</p>
<h2 id="v1.1.30.02">1.1.30.02 - April 1, 2019</h2>
<p>Fixed Menu Rename to allow duplicates and no-op/case-only renames.</p>
<p>Fixed X option for Hotstring(). [PR #132 from Helgef]</p>
<p>Fixed __init/__delete causing misleading error line/stack trace.</p>
<p>Fixed #if expressions stalling in Sleep and similar.</p>
<p>Fixed custom combos triggering incorrectly after a custom combo suspends itself.</p>
<h2 id="v1.1.30.01">1.1.30.01 - November 11, 2018</h2>
<p>Changed TV_Add/TV_Modify to allow "Bold1" and "Bold0".</p>
<p>Fixed hotkey pairs with non-zero #InputLevel blocking sent events.</p>
<p>Fixed <code>Control Choose</code> to send WM_COMMAND even if the control's ID is 0.</p>
<p>Fixed heap corruption in scripts with keyboard hook but no hotkeys.</p>
<p>Fixed escape sequences in one-line hotstrings with 'X' option.</p>
<p>Fixed <code>``</code> escape sequence preceding a <code>;</code> comment flag.</p>
<p>Fixed <code>finally</code> corrupting the value of a pending <code>return</code>.</p>
<p>Fixed MsgBox to detect timeouts even if the thread is interrupted.</p>
<p>Fixed Ahk2Exe to support more built-in variables in #Include.</p>
<h2 id="v1.1.30.00">1.1.30.00 - August 22, 2018</h2>
<p>Fixed SendInput/SendPlay to restore DownR/remapped modifiers.</p>
<p>Increased limit of hotkeys per script from 1000 to 32762.</p>
<p>Changed commands which accept On/Off/Toggle to also accept 1/0/-1 (where documented).</p>
<p>Improvements to debugger (DBGp) support:</p>
<ul>
<li>Added support for the -d (stack depth) option.</li>
<li>Added (DBGp-only) .<base> pseudo-property to resolve ambiguity.</li>
<li>Fixed debugger to avoid unsupported re-entry during break state.</li>
<li>Fixed DBGp command parser to support quoted parameters.</li>
</ul>
<h2 id="v1.1.29.01">1.1.29.01 - June 2, 2018</h2>
<p>Fixed WinMove crashing the program in some cases [broken by <span class="ver">v1.1.29.00</span>].</p>
<p>Fixed <code>Gui x:Default</code> if no Gui has been created [broken by <span class="ver">v1.1.29.00</span>].</p>
<h2 id="v1.1.29.00">1.1.29.00 - May 25, 2018</h2>
<p>Added <code>Object.Count()</code> and <code>ObjCount(Object)</code>.</p>
<p>Added <code>ObjGetBase(Object)</code> and <code>ObjSetBase(Object, Base)</code>.</p>
<p>Added <code>ObjRawGet(Object, Key)</code>.</p>
<p>Added <code>OnError(Func [, AddRemove])</code>.</p>
<p>Revised exception handling:</p>
<ul>
<li>If unhandled, show an error message/call OnError <em>before</em> the stack unwinds (making exceptions consistent with runtime errors).</li>
<li>Fixed __Delete causing commands to throw even when Try is not used.</li>
<li>Fixed COM clients unable to catch built-in script errors.</li>
</ul>
<p>Removed the limits on the number of custom modifiers that can be used with each key.</p>
<p>Changed <code>Send {Text}</code> to avoid toggling CapsLock or waiting for Win+L.</p>
<p>Fixed #Warn ClassOverwrite to not warn for A_Args.</p>
<p>Improved DBGp <code>source</code> command to properly convert between file codepage and UTF-8, and to reduce code size.</p>
<p>Other code size optimizations and trivial maintenance.</p>
<h2 id="v1.1.28.02">1.1.28.02 - April 7, 2018</h2>
<p>Fixed <code>Control ChooseString</code> and <code>ControlGet FindString</code> ignoring the first two items.</p>
<p>Fixed <code>Control ChooseString</code> to send WM_COMMAND even if the control's ID is 0.</p>
<p>Fixed WinActivate to restore the active window, as originally intended for <span class="ver">[v1.1.20.00]</span>.</p>
<h2 id="v1.1.28.01">1.1.28.01 - March 31, 2018</h2>
<p>Fixed Thread treating omitted parameters as 0.</p>
<p>Fixed FileAppend to stderr (**).</p>
<p>Fixed <code>break label</code> being able to jump to an unrelated loop.</p>
<p>Reverted hotstring reset behaviour to pre-v1.1.28.00.</p>
<p>Added <code>Hotstring("Reset")</code> for manually resetting the hotstring recognizer.</p>
<h2 id="v1.1.28.00">1.1.28.00 - February 11, 2018</h2>
<p><strong>Changes:</strong></p>
<ul>
<li>Changed __Delete to catch and report exceptions when called during object cleanup. It previously had the (erroneous) effect of "postponing" the exception until the next function call or the end of the try-block/thread.</li>
<li>Changed hotstring recognizer to reset when focus changes instead of just when the active window changes.</li>
<li>Changed WinMenuSelectItem to treat menu <code>0&</code> as the window's system menu.</li>
</ul>
<p><strong>New features:</strong></p>
<ul>
<li>Added support for all built-in variables in the path passed to #Include.</li>
<li>Added <a href="Variables.htm#TimeIdleKeyboard">A_TimeIdleKeyboard</a> and <a href="Variables.htm#TimeIdleMouse">A_TimeIdleMouse</a>.</li>
<li>Added <a href="Variables.htm#ListLines">A_ListLines</a>.</li>
<li>Added <a href="Variables.htm#ComSpec">A_ComSpec</a> (alias of ComSpec).</li>
<li>Added <a href="commands/LoopFile.htm#LoopFileFullPath">A_LoopFilePath</a> (alias of A_LoopFileFullPath, which is a misnomer).</li>
<li>Added hotstring <a href="Hotstrings.htm#X">X option</a> to execute a same-line action instead of auto-replace.</li>
<li>Added <a href="commands/Hotstring.htm">Hotstring()</a>.</li>
<li>Added <a href="Hotstrings.htm#Function">function hotstrings</a>.</li>
<li>Added MaxParts parameter to <a href="commands/StrSplit.htm">StrSplit</a>.</li>
<li>Improved <a href="commands/_MenuMaskKey.htm">#MenuMaskKey</a> to allow specifying VK and SC, or vk00sc000.</li>
</ul>
<p><strong>Bug fixes:</strong></p>
<ul>
<li>Fixed #MenuMaskKey treating some valid keys (such as Del) as invalid.</li>
<li>Optimised detection of AltGr on Unicode builds. This fixes a delay which occurred at startup (since v1.1.27.00) or the first time Send is called for each target keyboard layout (prior to v1.1.27.00).</li>
<li>Fixed misleading vicinity lines for <code>x up::y</code> remap error.</li>
<li>Fixed <code>Menu Tray, Icon, HICON:%hicon%</code>, which now uses <em>hicon</em> without resizing it.</li>
</ul>
<h2 id="v1.1.27.07">1.1.27.07 - January 21, 2018</h2>
<p>Fixed default size of Gui with +Parent to not be restricted by parent [broken by v1.1.27.05].</p>
<p>Fixed controls not redrawing if a separate Tab control is shown/hidden immediately after the control was invalidated (such as when showing/hiding multiple controls at once).</p>
<h2 id="v1.1.27.06">1.1.27.06 - January 16, 2018</h2>
<p>Fixed hotstrings/Input causing stuck dead keys (broken by v1.1.27.05).</p>
<h2 id="v1.1.27.05">1.1.27.05 - January 16, 2018</h2>
<p>Fixed visible Input end keys causing any pending dead key to double up.</p>
<p>Fixed hotstrings/Input affecting how Tab/Esc act in a dead key sequence.</p>
<p>Fixed A_IconFile returning an incorrect path if a DLL was used.</p>
<p>Fixed Gui with +Parent to center within the parent GUI vs. the screen.</p>
<p>Fixed Input/hotstring detection of dead key sequences in Universal Windows Platform (UWP) apps.</p>
<p>Fixed <code>< & v</code> and <code>> & v</code> being seen as duplicates, and similar cases. This affects custom combinations where the prefix key is also a modifier symbol. This also fixes hotkeys which consist only of modifier symbols and a single trailing space, such as <code>+ ::</code>, to be treated as errors rather than ignoring the space (hotkeys do not permit trailing space).</p>
<h2 id="v1.1.27.04">1.1.27.04 - January 10, 2018</h2>
<p>Fixed #Warn ClassOverwrite giving erroneous warnings.</p>
<h2 id="v1.1.27.03">1.1.27.03 - January 6, 2018</h2>
<p>Improved <code>Menu x, NoStandard</code> and <code>Menu x, DeleteAll</code> to work without attempting to destroy the underlying Win32 menu. This allows them to work when x is a menu bar or sub-menu of one.</p>
<p>Reworked the handling of <code>vkXXscYYY</code>:</p>
<ul>
<li>Fixed GetKeyVK and GetKeyName treating vkXXscYYY as vk00scYYY.</li>
<li>Send is now more strict with {vk...} and invalid suffixes, consistent with similar changes made by <span class="ver">[v1.1.27.00]</span> (but sc is still supported).</li>
<li>Reduced code size.</li>
</ul>
<p>Fixed mishandling of numeric keys outside the 32-bit range (but inside the 64-bit range) in some corner cases on 64-bit builds. This only affects classes which use such numbers as names (not recommended for multiple reasons) and array access via IDispatch with such numbers as keys/member names.</p>
<h2 id="v1.1.27.02">1.1.27.02 - January 1, 2018</h2>
<p>Fixed loading of bmp files as icons at original size.</p>
<p>Fixed compound assignments such as <code>Test.Prop[1] += 1</code> (broken by v1.1.27.01).</p>
<h2 id="v1.1.27.01">1.1.27.01 - December 31, 2017</h2>
<p>Fixed program crashes caused by <code>++X</code> or <code>--X</code> in scripts which lack #NoEnv (broken by v1.1.27.00).</p>
<p>Fixed #Warn ClassOverwrite giving an erroneous warning for <code>++MyClass.X</code>.</p>
<p>Fixed remapping to allow custom combinations such as <code>a & b::c</code>.</p>
<p>Fixed Send/hotstrings/Input to adapt to the keyboard layout of the focused control instead of just the active window. In particular, this affects UWP apps such as Microsoft Edge.</p>
<p>Fixed hook hotkeys to suppress the Start menu activation which occurs when an isolated Ctrl/Shift up is received. Ctrl up may be generated by the system when switching from a keyboard layout with AltGr to one without (such as from UK to US), if Ctrl is not held down at the time. This fixes hotkeys such as <code>$#z::WinActivate x</code> when the change in focus causes those conditions.</p>
<p>Fixed Input not collecting characters when both Shift keys are down.</p>
<p>Fixed Input to use "sc" and "vk" for end keys in ErrorLevel rather than "Sc" and "Vk" (caused by v1.1.20).</p>
<p>Fixed <code>GetKeyName/VK/SC("vkXXscYYY")</code> where YYY begins with A-F (broken by v1.1.26).</p>
<h2 id="v1.1.27.00">1.1.27.00 - December 25, 2017</h2>
<p><strong>Changes:</strong></p>
<p>Replaced AU3_Spy.exe with WindowSpy.ahk.</p>
<ul>
<li>AU3_Spy.exe is still launched if WindowSpy.ahk is not found.</li>
<li>It now follows the focused control by default, and has a checkbox for both window and control to follow the mouse.</li>
<li>It no longer takes over a global hotkey (Win+A). Instead, hold Ctrl or Shift to suspend updates (release them after focusing Window Spy).</li>
<li>It is now possible to Alt-Tab to Window Spy on Windows 10 without the contents of the GUI changing.</li>
</ul>
<p>Changed <a href="commands/Send.htm#AZ">a-z to mean vk41-vk5A</a> when absent from the keyboard layout, except with Raw mode or when sending single unmodified characters. This allows hotkeys and sent keyboard shortcuts to work more intuitively on certain non-English keyboard layouts.</p>
<p>Changed Send on ANSI versions to use <a href="http://msdn.microsoft.com/en-us/library/ms646310">SendInput()</a> in place of Alt+nnnnn for <a href="commands/Send.htm#characters">special characters</a>.</p>
<p>Changed the rules for <a href="commands/_MenuMaskKey.htm">masking Alt/Win</a> after pressing a hook hotkey:</p>
<ul>
<li>Explicitly sent Alt/Win up may be masked. This fixes remappings such as <code>AppsKey::RWin</code>, but hotkeys which are intended to activate the Start Menu may require new workarounds.</li>
<li>If Alt/Win is logically but not physically down, only hotkeys which require Alt/Win (such as <code>#a::</code>, not <code>*a::</code>) cause masking. This is to allow a remapping or wildcard hotkey to send the key-up without it being masked.</li>
<li>Unsuppressed hotkeys such as <code>~#a::</code> no longer cause masking, because the unsuppressed keydown/keyup is sufficient to prevent a menu. However, mouse hotkeys like <code>~*MButton::</code> no longer suppress the Start Menu if combined with the Win key. It can be suppressed manually with <code>Send {Blind}{vk07}</code> or similar.</li>
<li>The keyboard hook now tracks events in relation to Alt/Win, so that the mask key does not need to be sent if Alt/Win was already masked by some other event (physical or sent).</li>
</ul>
<p class="warning">The hotkeys <code>~LWin::</code> and <code>~RWin::</code> no longer suppress the Start Menu. See <a href="commands/_MenuMaskKey.htm">#MenuMaskKey</a> for details and a workaround.</p>
<p>Added proper validation for vk or sc key names, so names such as "sc01notvalid" are no longer recognized as keys.</p>
<p class="warning">Scripts containing hotkeys of the form <code>VKnnSCnnn::</code> will need to be corrected by removing <code>SCnnn</code>, which was previously ignored.</p>
<p>Help file: Replaced the standard HTML Help Viewer sidebar with the new HTML5 sidebar developed by Ragnar-F.</p>
<p><strong>New features:</strong></p>
<ul>
<li>Added <a href="commands/Math.htm#Min">Min</a>/<a href="commands/Math.htm#Max">Max</a> built-in functions. [PR #84 from Ragnar-F]</li>
<li>Added <a href="Variables.htm#Args">A_Args</a> as an alternative to the numbered variables.</li>
<li>Added <a href="Functions.htm#ForceLocal">force-local mode</a> for functions.</li>
<li>Added <a href="commands/_Warn.htm#ClassOverwrite">#Warn ClassOverwrite</a>.</li>
<li>Added <a href="commands/Send.htm#SendText">{Text} mode</a> for Send and <a href="Hotstrings.htm#T">T option</a> for hotstrings. These are like the Raw mode, but more reliable.</li>
<li>Added <a href="commands/Send.htm#DownR">{<em>key</em> <strong>DownR</strong>}</a> and changed remapping to use it, to fix issues with <code>AppsKey::RWin</code> and similar.</li>
</ul>
<p><strong>Bug fixes:</strong></p>
<ul>
<li>Fixed icon-loading to not default to ID 0 when the index is invalid.</li>
<li>Fixed VK↔SC mapping of PrintScreen. SC→VK was already correct on Vista and later.</li>
<li>Fixed Hotkey control returning scXXX instead of names in some cases.</li>
<li>Fixed ListVars crashing if a ByRef parameter refers to a variable containing an object. [PR #86 from HotKeyIt]</li>
<li>Fixed some (very unlikely) memory leaks.</li>
<li>Fixed menu handles not being freed if only the standard items are used.</li>
<li>Fixed bold font not being applied to default menu item if it has a submenu and a Win32 menu handle.</li>
<li>Fixed Send to use the correct modifier state with Unicode chars.</li>
<li>Fixed <code>ControlSend {u n}</code>, where u is Unicode, to send n times, not just 1.</li>
<li>Fixed inconsistent behavior of AltGr between OS versions. Specifically, <code>RAlt::</code> once again causes the system to "release" LCtrl on Windows 10, as it did prior to v1.1.26.01 (but unlike those old versions, it prevents the RAlt-up from reaching the active window). This change should not affect layouts without AltGr.</li>
<li>Fixed <code>Menu Tray, Icon</code>, SB_SetIcon and LoadPicture with non-zero Icon option to allow bitmaps (but convert if needed).</li>
<li>Fixed menu items to not disappear when a cursor is set as a menu item's icon.</li>
<li>Improved launching of Window Spy and the help file:
<ul>
<li>If AutoHotkey is installed but the current executable is in a different directory (i.e. portable), the installed file is no longer preferred as it may be the wrong version. It may still be used as a fallback.</li>
<li>On failure to launch the file, show the error message inside the dialog, not in its titlebar.</li>
</ul></li>
<li>Fixed one-line hotkeys with expressions beginning in <code>sc</code> or <code>vk</code>.</li>
<li>Fixed <code>></code>/<code><</code> hotkey modifiers incorrectly allowing both keys to be pressed. For example, <code><^A</code> could erroneously be triggered by LCtrl+RCtrl+A, thereby preventing the <code><>^A</code> hotkey from working.</li>
<li>Fixed auto-replace hotstrings inserting the literal text "{Raw}" in some cases (specifically, when the replacement contains <code>{Raw}</code> and the O, R and * options were not used).</li>
<li>Fixed some hotkeys not using the hook when eclipsed by a wildcard hotkey, depending on the order of definition.</li>
<li>Fixed key-down hotkeys to revert to "reg" if they were only "k-hook" because of a corresponding key-up hotkey which has since been disabled. (Prior to v1.1.07.03 this already happened, but the key-down hotkey was never set to "k-hook" in the first place if defined after the key-up.)</li>
<li>Fixed hook hotkeys to ignore modifier changes made by <code>Send !^+#{key}</code> or when sending Unicode characters. This restores Send to how it was prior to v1.1.06 when at SendLevel 0, but keeps the v1.1.06+ behavior at SendLevel >= 1, allowing Send to trigger the right hotkeys.</li>
<li>Improved the odds that Send from a "reg" hotkey such as <code>^m::Send x</code> will restore the modifier state if Send is being called for the very first time. This makes it less likely to produce a different (and unexpected) result the first time it is held down, such as xmmm instead of xxxx.</li>
</ul>
<h2 id="v1.1.26.01">1.1.26.01 - July 16, 2017</h2>
<p>Fixed RegDelete (with no args) failing when A_LoopRegSubKey is blank, such as when enumerating keys directly under the root key.</p>
<p>Fixed <code>RAlt/LAlt::</code> sometimes failing to prevent menu activation after the user alt-tabs away from a window and reactivates it.</p>
<p>Fixed SC → VK translation for multimedia keys, PrintScreen, CtrlBreak, Pause, LWin and RWin, with the exception that multimedia keys, PrintScreen and CtrlBreak are still translated incorrectly on Windows 2000 and XP.</p>
<p>Fixed VK → SC translation for multimedia keys, CtrlBreak and Pause.</p>
<p>Fixed 'Wait commands such as RunWait to log extra lines for ListLines only when necessary to show that it is still waiting; that is, after resuming from an interruption which logged other lines.</p>
<h2 id="v1.1.26.00">1.1.26.00 - June 10, 2017</h2>
<p>Changed the format ListVars uses to display variables containing objects. The object's class name is now shown.</p>
<p>Added "class" and "clsid" modes to ComObjType().</p>
<p>Revised class names shown by the debugger and significantly reduced code size in the process.</p>
<p>Revised FileSetAttrib, FileSetTime and FileDelete to reduce code size. There should not be any changes in behaviour.</p>
<p>Made other minor optimizations to code size.</p>
<p>Fixed GetKeySC() with the key names Esc, Escape, ScrollLock and PrintScreen.</p>
<p>Fixed hotstring word detection of words containing nonspacing marks, such as Arabic diacritics.</p>
<h2 id="v1.1.25.02">1.1.25.02 - May 13, 2017</h2>
<p>Fixed GUI option strings being permanently truncated if an error is raised.</p>
<p>Fixed properties and class sub-variables to allow non-ASCII characters.</p>
<p>Fixed <code>new</code> operator to allow __New to throw or exit.</p>
<h2 id="v1.1.25.01">1.1.25.01 - March 5, 2017</h2>
<p>Fixed Send to allow other scripts to act on modifier state changes which immediately precede a special character, such as the Shift release in <code>Send Mört</code>.</p>
<h2 id="v1.1.25.00">1.1.25.00 - March 4, 2017</h2>
<p>Added <a href="commands/Hotkey.htm#IfFn">Hotkey, If, % FunctionObject</a>.</p>
<p>Fixed website address in Help menu.</p>
<h2 id="v1.1.24.05">1.1.24.05 - February 3, 2017</h2>
<p>Fixed WinSet AlwaysOnTop/Trans/TransColor to work on windows with 0 ExStyle.</p>
<h2 id="v1.1.24.04">1.1.24.04 - December 17, 2016</h2>
<p>Fixed <code>File.Read<i>Num</i>()</code> repeating old data if a prior <code>File.Read()</code> had stopped reading at the end of the buffer.</p>
<p>Improved buffer utilisation when <code>File.Read()</code> reaches the end of the buffered data.</p>
<p>Fixed <code>GuiControl +Password</code> to use the default bullet character on XP and later.</p>
<p>Fixed <code>GuiControl +/-Password</code> to redraw the control immediately.</p>
<h2 id="v1.1.24.03">1.1.24.03 - November 19, 2016</h2>
<p>Fixed COM exception messages to not end in <code>`r</code>.</p>
<p>Fixed <code>{U+x}</code> to support supplementary characters (x > 0xFFFF).</p>
<p>Fixed class properties which lack get{} to return an empty value instead of the internal Property object when the class has a base which does not define a value for the property. Properties defined in baseless classes already behaved correctly.</p>
<p>Fixed the background color of controls on a Tab3 control when the system has visual styles disabled (i.e. Windows Classic).</p>
<p>Fixed handling of thread-exit in functions which are called directly by an event (such as OnExit functions). This bug had no known effect except in the v2-alpha branch.</p>
<p>Fixed the debugger to detect disconnection immediately (i.e. when a client terminates without calling stop/detach).</p>
<p>Fixed the debugger to treat <code>property_get -m 0</code> as "unlimited", as per the DBGp spec.</p>
<p>Fixed the debugger to expect base64 for <code>property_set -t integer/float</code>, as per the DBGp spec.</p>
<h2 id="v1.1.24.02">1.1.24.02 - October 13, 2016</h2>
<p>Added a <a href="Program.htm#Installer_uiAccess">Run with UI Access</a> option to the installer.</p>
<p>Added documentation for Tab3 <a href="commands/GuiControls.htm#Tab_Autosize">autosizing</a>.</p>
<p>Fixed several Tab3 bugs:</p>
<ul>
<li>Autosizing was not being triggered by the first call to <a href="commands/Gui.htm#Show">Gui Show</a> if the <code>AutoSize</code> or <code>w</code> and <code>h</code> options were used.</li>
<li>If a Tab3 control is empty when autosizing occurs, it now retains the default size instead of becoming unusable.</li>
<li>Autosizing now occurs immediately before creating another tab control, as though <a href="commands/GuiControls.htm#TabCmd">Gui Tab</a> was called.</li>
<li>Autosizing failed if the tab control had negative screen coords.</li>
<li>Hiding a Tab3 control with GuiControl now also hides its dialog/background.</li>
</ul>
<p>Fixed OnMessage to pass lParam as unsigned on 32-bit.</p>
<p>Fixed <code>Gui Name :</code> to allow spaces before the colon.</p>
<p>Fixed identifying a Gui or GuiControl by HWND with a negative value.</p>
<p>Fixed ComObject to suppress any errors raised by <a href="commands/ComObjConnect.htm">disconnection of events</a> after the script has released the object.</p>
<p>Fixed Gui Show causing the window to shrink if it had a multi-line menu bar.</p>
<p>Fixed <code>LV_InsertCol(n, width)</code> not causing ListView scrollbar to update on some OS versions.</p>
<p>Optimized code size of FileRecycleEmpty.</p>
<h2 id="v1.1.24.01">1.1.24.01 - August 2, 2016</h2>
<p>Changed <code>Hotkey, If, Expression</code> to raise an error if the unused third parameter is not blank.</p>
<p>Fixed <code>&&</code>, <code>||</code> and ternary to release any object used as the condition, as in <code>if (a.subObject && b)</code>.</p>
<p>Fixed Gui/GuiControl failing to "check" radio buttons within a Tab3 control.</p>
<p>Fixed FileCreateShortcut to allow relative paths for the LinkFile parameter on Windows 10.</p>
<p>Fixed themed Tab3 control to not override the custom text color of its controls.</p>
<p>Fixed debugger mishandling continuation commands in some specific cases.</p>
<h2 id="v1.1.24.00">1.1.24.00 - May 22, 2016</h2>
<p><strong>Breaking changes:</strong></p>
<p>Passing SetTimer's <a href="commands/SetTimer.htm#Label"><em>Label</em></a> parameter an empty variable or an expression which results in an empty value is now considered an error. The parameter must be either given a non-empty value or <a href="commands/SetTimer.htm#OmitLabel">completely omitted</a>.</p>
<p><a href="commands/SetTimer.htm#once">Run-once timers</a> are automatically deleted after running if they are associated with an object created by the script. This allows the object to be freed if the script is no longer referencing it, but it also means the timer's <em>Period</em> and <em>Priority</em> are not retained.</p>
<p>SetTimer, Hotkey, GuiControl and Menu now check the minimum parameter count of functions given by reference (not just by name, as in previous versions). If the function requires too many parameters, an error is raised or ErrorLevel is set (as appropriate).</p>
<p><strong>Backward-compatible changes:</strong></p>
<p>If SetTimer's <a href="commands/SetTimer.htm#Label"><em>Label</em></a> parameter is <a href="commands/SetTimer.htm#OmitLabel">omitted</a> and <a href="Variables.htm#ThisLabel">A_ThisLabel</a> is empty, the current timer (if any) is used.</p>
<p><strong>New features:</strong></p>
<p>Added <a href="commands/GuiControls.htm#Tab">Tab3 control type</a>, solving a number of issues with Tab controls.</p>
<p><strong>Bug-fixes:</strong></p>
<p>Fixed GuiControl to update controls when adding/deleting tabs. Specifically:</p>
<ul>
<li>Selecting a new tab with <code>||</code> now works correctly.</li>
<li>Deleting all tabs now hides the controls of the former tab.</li>
</ul>
<p>Fixed <code>+Disabled</code>/<code>+Hidden</code> losing effect on controls in a tab.</p>
<p>Fixed disabled tab controls to ignore Ctrl+Tab.</p>
<p>Fixed <code>Gui Tab</code> without parameters to start a new radio group if applicable. <code>Gui Tab</code> with parameters already had this effect.</p>
<h2 id="v1.1.23.07">1.1.23.07 - May 20, 2016</h2>
<p>Fixed <code>Menu x, Insert, y, z, % object</code> to use the object, not ignore it.</p>
<p>Fixed <code>Menu x, Add, :item text, % object</code> to use the object, not look for a submenu.</p>
<h2 id="v1.1.23.06">1.1.23.06 - May 15, 2016</h2>
<p>Fixed <code>break label</code> crashing the program if nested directly inside its target loop.</p>
<h2 id="v1.1.23.05">1.1.23.05 - March 27, 2016</h2>
<p>Fixed InputBox, MsgBox, FileSelectFile and FileSelectFolder sending an unwanted Alt-up if Alt is down. This was due to an error with the Ctrl/Shift workaround added in v1.1.22.01.</p>
<p>Improved the Ctrl/Shift workaround to avoid unnecessarily "masking" the Win key if Ctrl, Shift or Alt is also down.</p>
<h2 id="v1.1.23.04">1.1.23.04 - March 26, 2016</h2>
<p>Fixed LV_Modify to support omitting Options, as in <code>LV_Modify(r,, col1)</code>.</p>
<h2 id="v1.1.23.03">1.1.23.03 - March 12, 2016</h2>
<p>Fixed __Delete meta-functions erroneously suppressing or prematurely re-throwing exceptions, when they are called during exception propagation.</p>
<p>Fixed load-time detection of function calls where a required parameter is blank, as in <code>fn(x,,y)</code>.</p>
<h2 id="v1.1.23.02">1.1.23.02 - March 12, 2016</h2>
<p>Fixed RegDelete deleting the entire key instead of the default value.</p>
<p>Code maintenance; minor code size improvement.</p>
<h2 id="v1.1.23.01">1.1.23.01 - January 24, 2016</h2>
<p>Fixed a theoretical issue with loading scripts from weird/very long paths.</p>
<p>Ahk2Exe: Fixed Unicode in compiled scripts (broken by v1.1.23.00 release).</p>
<h2 id="v1.1.23.00">1.1.23.00 - January 16, 2016</h2>
<p>Added <a href="commands/Menu.htm#Insert">Menu Insert</a> sub-command.</p>
<p>Added <a href="commands/MenuGetHandle.htm">MenuGetHandle()</a>.</p>
<p>Added <a href="commands/MenuGetName.htm">MenuGetName()</a>.</p>
<p>Added menu item options: Radio, Right, Break and BarBreak.</p>
<p>Improved the Menu command to allow identifying items by position: <code>1&</code></p>
<p>Added <a href="commands/LoadPicture.htm">LoadPicture()</a>.</p>
<p>Added <a href="misc/ImageHandles.htm">hicon/hbitmap: syntax</a> for passing handles to commands which normally load an image from file.</p>
<p>Added built-in variables: A_CoordModeToolTip/Pixel/Mouse/Caret/Menu, A_DefaultGui, A_DefaultListView, A_DefaultTreeView, A_KeyDelayPlay, A_KeyDuration/Play, A_MouseDelayPlay, A_SendLevel, A_SendMode and A_StoreCapsLockMode.</p>
<p>Added <code>Ix</code> Hotkey option to set the hotkey variant's input level to x.</p>
<p>Improved Picture control to support BackgroundTrans with icons.</p>
<p>Improved Picture control to reduce flicker when loading large images.</p>
<p>Small optimizations to the menu code and built-in var lookups.</p>
<p>Fixed conversion of menu items to/from separators.</p>
<p>Fixed A_ThisMenuItemPos to support duplicate item names.</p>
<p>Fixed sub-menus sometimes not being recreated after a menu is deleted.</p>
<p>Fixed AutoHotkeyXXX.exe to launch AutoHotkey.chm, not AutoHotkeyXXX.chm.</p>
<h2 id="v1.1.22.09">1.1.22.09 - November 11, 2015</h2>
<p>Fixed some issues with SetTimer Delete.</p>
<ul>
<li>KeyHistory's timer count erroneously included deleted timers.</li>
<li>Calling KeyHistory within a thread started by a timer crashed the script if the timer had been deleted but not turned off.</li>
<li>Deleting the most recently created timer prevented subsequently created timers from working unless ALL timers were deleted.</li>
</ul>
<h2 id="v1.1.22.08">1.1.22.08 - November 11, 2015</h2>
<p>Fixed For-loop to pass control correctly when _NewEnum/Next throws an exception.</p>
<p>Fixed Finally to suspend the pending exception until its body has been evaluated, not just until the first built-in function call.</p>
<p>Fixed load-time detection of invalid jumps from Finally blocks (broken by v1.1.20).</p>
<h2 id="v1.1.22.07">1.1.22.07 - September 27, 2015</h2>
<p>Fixed Gui control <code>w-1</code> and <code>h-1</code> options failing when DPI is 150+% and the Gui has not applied <code>-DPIScale</code>.</p>
<p>Fixed <code>~<i>key</i> up</code> hotkeys to not perform an automatic <code>Send {<i>key</i> down}</code>. This was occurring only if the hotkey was turned on after the key was pressed down.</p>
<h2 id="v1.1.22.06">1.1.22.06 - September 13, 2015</h2>
<p>Fixed Input and hotstrings to catch Unicode/non-key character events.</p>
<p>Fixed auto-sizing of Edit controls to include the last line if blank.</p>
<p>Fixed handling of out-of-memory in ComObj functions.</p>
<p>Fixed ComObjArray to ignore excess parameters rather than crashing (only applies to dynamic calls).</p>
<p>Fixed GuiControl to append--not prepend--tabs, as documented.</p>
<p>Fixed XP64 support.</p>
<h2 id="v1.1.22.05">1.1.22.05 - September 10, 2015</h2>
<p>Fixed icons which have non-numeric IDs loading with sub-optimal quality.</p>
<p>Fixed Gui Destroy not releasing function objects which were set by the +g option.</p>
<p>Fixed Gui Show to avoid attempting to force-activate a child GUI.</p>
<p>Fixed failure to set Caps/Num/ScrollLock state while the key is down.</p>
<p>Fixed Gui Color causing incorrect text color (usually black).</p>
<p>Changed Gui Show to improve the odds of GuiSize executing immediately.</p>
<p><em>For developers:</em></p>
<ul>
<li>Modified project config to support more VC++ versions.</li>
<li>Fixed various build warnings on VC++ 2015.</li>
<li>64-bit binaries are now built with VC++ 2015. 32-bit binaries still use VC++ 2010.</li>
</ul>
<h2 id="v1.1.22.04">1.1.22.04 - August 19, 2015</h2>
<p>Fixed ObjRawSet() to return nothing.</p>
<p>Added Windows 10 supportedOS tag to the exe manifest (avoids some issues with the Program Compatibility Assistant and similar).</p>
<p>Added detection of syntax errors after ")" in a function declaration.</p>
<h2 id="v1.1.22.03">1.1.22.03 - July 12, 2015</h2>
<p>Fixed A_EndChar returning a truncated value for Unicode end chars.</p>
<p>Small implementation changes:</p>
<ul>
<li>Changed A_Language to use GetSystemDefaultUILanguage().</li>
<li>Refactored Window Spy/help file launching from tray menu to improve code re-use.</li>
<li>Optimized Gui/Menu/Hotkey/Hotstring/OnClipboard message handling (minor).</li>
</ul>
<h2 id="v1.1.22.02">1.1.22.02 - May 27, 2015</h2>
<p>Fixed TreeView to not raise <code>*</code> events for unknown notifications.</p>
<p>Fixed crashing/bad behaviour when a timer deletes itself.</p>
<p>Fixed RWin-up being <a href="commands/_MenuMaskKey.htm">masked</a> in some rare cases where LWin-up wouldn't have been.</p>
<h2 id="v1.1.22.01">1.1.22.01 - May 24, 2015</h2>
<p>Fixed Text/Edit/Button control sizing to compensate for character overhang.</p>
<p>Fixed registry commands to allow <code>:</code> in the SubKey when combined with RootKey.</p>
<p>Fixed hotkey prioritization to take modifiers into consideration.</p>
<p>Refactored else/try/catch/finally handling to support <code>hotkey::try cmd</code>.</p>
<p>Added a workaround for the script's dialogs acting as though Ctrl or Shift is pressed after they are blocked by the keyboard hook.</p>
<h2 id="v1.1.22.00">1.1.22.00 - May 1, 2015</h2>
<p>Added SetErrorMode(SEM_FAILCRITICALERRORS) on program startup to suppress system-level error messages such as "There is no disk in the drive". Calling Drive or DriveGet no longer affects the process' error mode.</p>
<p>Changed MonthCal controls to have tab-stop by default on Vista or later.</p>
<p>Improved ComObjConnect to use IProvideClassInfo when available.</p>
<p>Fixed some issues with method/property definitions following an end brace on the same line.</p>
<p>Fixed Text/Link control auto-sizing to compensate for the +Border (WS_BORDER) style.</p>
<p>Fixed <code>Break <i>N</i></code> when Loop is used directly below If/Else/Try/Catch.</p>
<h2 id="v1.1.21.03">1.1.21.03 - April 12, 2015</h2>
<p>Fixed detection of naming conflicts between properties and methods.</p>
<h2 id="v1.1.21.02">1.1.21.02 - April 4, 2015</h2>
<p>Fixed <code>OnMessage(msg, fnobj, 0)</code> to do nothing if <em>fnobj</em> wasn't previously registered.</p>
<h2 id="v1.1.21.01">1.1.21.01 - April 3, 2015</h2>
<p>Fixed StrReplace() to allow ReplaceText to be omitted.</p>
<p>Fixed class variables to allow non-ASCII names.</p>
<h2 id="v1.1.21.00">1.1.21.00 - March 28, 2015</h2>
<p>Added <a href="commands/LoopReg.htm">Loop, Reg, RootKey[\Key, Mode]</a>.</p>
<p>Added <a href="commands/LoopFile.htm">Loop, Files, FilePattern [, Mode]</a>.</p>
<p>Changed <em>InputVar</em> parameters to allow <a href="Variables.htm#percent-space">% expression</a> (except with If commands).</p>
<p>Revised <a href="objects/Object.htm">Object methods</a>:</p>
<ul>
<li>Added Object.InsertAt(), Object.Push() and ObjRawSet().</li>
<li>Added Object.Delete(), Object.RemoveAt() and Object.Pop().</li>
<li>Added Object.Length().</li>
</ul>
<p>Added <a href="commands/Ord.htm">Ord()</a> and updated Chr() to support supplementary chars (>0xFFFF).</p>
<p>Added <a href="commands/StringReplace.htm">StrReplace()</a>.</p>
<p>Removed the obsolete and undocumented 5-parameter mode of RegRead, which was exclusively for AutoIt v2 compatibility (the extra parameter was unused).</p>
<p>Changed <a href="commands/RegRead.htm">RegRead</a>, <a href="commands/RegWrite.htm">RegWrite</a> and <a href="commands/RegDelete.htm">RegDelete</a> so that the RootKey and SubKey parameters can optionally be combined.</p>
<h2 id="v1.1.20.03">1.1.20.03 - March 21, 2015</h2>
<p>Fixed MouseGetPos (OutputVarControl), GuiContextMenu and GuiDropFiles (A_GuiControl) to not ignore disabled controls [broken by v1.1.20.00].</p>
<h2 id="v1.1.20.02">1.1.20.02 - March 11, 2015</h2>
<p>Fixed add-first mode of OnMessage.</p>
<p>Fixed A_OSVersion for unrecognized OSes on x64 builds.</p>
<p>Fixed ExitApp to unpause the script before releasing objects in case a __delete meta-function is called.</p>
<p>Trivial optimizations and code maintenance.</p>
<h2 id="v1.1.20.01">1.1.20.01 - March 10, 2015</h2>
<p>Reverted the changes made in v1.1.20.00 to saving and restoring of ErrorLevel on thread interrupt, due to unintended consequences.</p>
<ul>
<li>ErrorLevel is not reset or cleared when a new thread starts. Instead, it retains the value it had in the interrupted thread, as in v1.1.19 and older.</li>
<li>If ErrorLevel contains an object and the thread is interrupted, the object is replaced with an empty string when the thread resumes, as in v1.1.19 and older.</li>
<li>If ErrorLevel contains a string longer than 127 characters, it is truncated when the thread resumes, as in v1.1.19 and older.</li>
</ul>
<p>Re-fixed timers sometimes causing ErrorLevel to be formatted as hex.</p>
<p>Fixed class methods to retain a counted reference to the class.</p>
<h2 id="v1.1.20.00">1.1.20.00 - March 8, 2015</h2>
<p><strong>New features:</strong></p>
<p>Enhanced Hotkey, Menu, SetTimer, Gui events and Gui control events to accept <a href="misc/Labels.htm#Functions">a function instead of a label</a>, if no label is found.</p>
<p>Enhanced Hotkey, Menu, SetTimer and Gui control events to accept a <a href="objects/Functor.htm">function object</a>. Added a Delete sub-command for SetTimer to allow the object to be released.</p>
<p>Enhanced <a href="commands/OnMessage.htm">OnMessage()</a> to allow any number of functions or function objects to monitor a single message.</p>
<p>Added <a href="commands/OnExit.htm#function">OnExit()</a> and <a href="commands/OnClipboardChange.htm#function">OnClipboardChange()</a>, which accept a function name or object.</p>
<p>Added capability to <a href="Hotkeys.htm#Function">point hotkey labels at a function definition</a>.</p>
<p>Added <a href="commands/Format.htm#ULT">U/L/T modifiers</a> to perform case conversion with Format().</p>
<p>Added the <a href="commands/Input.htm#E">E option</a> to the Input command, for handling end keys by character instead of keycode.</p>
<p>Added ** (stderr) support to FileAppend.</p>
<p>Added <a href="commands/ObjBindMethod.htm">ObjBindMethod(obj, method, args*)</a> and <a href="objects/Func.htm#Bind">Func.Bind(args*)</a>.</p>
<p><strong>Changes:</strong></p>
<p>Changed the default behavior when the main script file is not found:</p>
<ul>
<li>If no script was specified and the default script files are not found, show the new <a href="Welcome.htm">Welcome</a> page in the help file.</li>
<li>If a script was specified or the help file is missing (or is named differently to the executable), just show an error message.</li>
</ul>
<p>Changed WinActivate to restore the window if already active but minimized.</p>
<p>Changed WinActivate to look for a visible window to activate if DetectHiddenWindows is off and the active window is hidden, instead of doing nothing.</p>
<p>Changed the method used by A_CaretX/A_CaretY to retrieve the caret position.</p>
<ul>
<li>Returns blank in more cases where the real caret position can't be determined, instead of returning the top-left of the active window.</li>
<li>Less likely to cause side-effects.</li>
<li>Works in console windows.</li>
</ul>
<p>Changed A_OSVersion to use <a href="http://msdn.microsoft.com/en-us/library/ff561910">RtlGetVersion()</a>, so that it can detect Windows 10 and hopefully future versions.</p>
<p>Changed A_OSVersion to return a version number of the form "major.minor.build" if it doesn't have a name for the OS.</p>
<p>Changed objects to support <code>x[,y]</code>, <code>x.y[,z]</code> and <code>x[](y)</code>.</p>
<ul>
<li>User-defined objects can utilize this by specifying default values for parameters of properties and meta-functions. For __Call, the first parameter is omitted, as in <code>x.__Call(,y)</code>.</li>
<li>COM objects invoke DISPID_VALUE if the member name is omitted. For example, <code>x[]</code> retrieves x's default property and <code>fn[]()</code> can be used to call JScript functions.</li>
</ul>
<p>Several under-the-hood changes to fix bugs, reduce code size or improve performance, including:</p>
<ul>
<li>Changes to preparsing of #if and static var initializers.</li>
<li>Changes to preparsing of { blocks }.</li>
</ul>
<p><strong>Bug-fixes:</strong></p>
<p>Fixed VK to keyname conversions for keys 'A' to 'Z' to respect layout.</p>
<ul>
<li>Applies to: GetKeyName, Hotkey control, A_PriorKey, KeyHistory and Input EndKey ErrorLevel (except where Shift key is required).</li>
<li>All other keys, including those that produce non-ASCII letters, were already translated according to AutoHotkey's current keyboard layout.</li>
</ul>
<p>Fixed FileAppend to * (stdout) to respect the encoding parameter instead of always outputting ANSI text.</p>
<p>Fixed auto-sizing of GUIs with only one scrollbar.</p>
<p>Fixed <code>Exception(m, n)</code> crashing when n is too far out of bounds.</p>
<p>Fixed GuiContextMenu to set A_GuiEvent correctly on x64.</p>
<p>Fixed FileGetSize sometimes giving an indeterminate result if the file doesn't exist or can't be opened.</p>
<p>Fixed thread interrupts to save and restore ErrorLevel more fully [reverted in v1.1.20.01 due to unintended consequences].</p>
<p>Fixed ControlClick Pos mode to ignore disabled controls.</p>
<p>Fixed odd behaviour when Gui +MaxSize is smaller than +MinSize.</p>
<p>Fixed GuiControl/Get requiring a Gui name when given a control HWND.</p>
<p>Fixed meta-functions interfering with the line number reported by Exception().</p>
<h2 id="v1.1.19.03">1.1.19.03 - February 11, 2015</h2>
<p>Improved remapping to allow <code>scXXX::Y</code> when the current keyboard layout does not map <code>scXXX</code> to a VK code. However, <code>Y</code> must still exist on the current keyboard layout.</p>
<p>Fixed <code>break n</code> to work correctly when <code>until</code> is present, instead of terminating the thread.</p>
<p>Fixed ControlGetFocus disrupting the user's ability to double-click (thanks HotKeyIt).</p>
<p>Fixed ListView to not call the control's g-label for unsupported (and previously unknown) notifications such as LVN_GETEMPTYMARKUP.</p>
<p>Fixed <code>#Include *i <X></code> to exit the program as intended if X has a syntax error.</p>
<p>Fixed <code>for var in <i>expression</i></code> sometimes crashing the program when <i>expression</i> calls a script function.</p>
<h2 id="v1.1.19.02">1.1.19.02 - January 25, 2015</h2>
<p>Removed the 16-color icons which were used on Win9x/Win2k.</p>
<p>Removed the separate tray icon resources.</p>
<p>Improved selection of icon size when loading icons from DLL/EXE files.</p>
<ul><li>In short, prefer to downscale rather than upscale. This is especially helpful on systems with 125% or 150% DPI, where the system icon sizes are 20/40 or 24/48 instead of 16/32. If all of these sizes are present in the icon resource, this change makes no difference.</li></ul>
<p>Fixed some issues with hotkey validation at load time.</p>
<ul>
<li>Hotkeys which are never valid, like foo::, are now always treated as errors instead of giving a misleading warning about keyboard layout.</li>
<li>Hotkeys like ^!ä:: which are inactive because of the current keyboard layout are now allowed to have a same-line action, and the label is registered correctly (e.g. as "^!ä" and not as "^!ä:"). If the /iLib command line switch is used, the warning is suppressed.</li>
<li>Remappings which are inactive because of the current keyboard layout now show two warnings instead of an unrecoverable error.</li>
<li>If a Wheel hotkey is used as a prefix key, there is only one error message instead of two, and it respects /ErrorStdOut.</li>
</ul>
<p>Fixed /iLib switch to write the file even if there's a syntax error.</p>
<p>Fixed return/break/continue/goto in try..<a href="commands/Finally.htm">finally</a>.</p>
<h2 id="v1.1.19.01">1.1.19.01 - January 5, 2015</h2>
<p>Fixed Hotkey command crashing the program when trying to create new variants of existing hotkeys (broken by v1.1.19.00).</p>
<p>Made some minor optimizations to the Hotkey command and A_TimeIdle, relating to removal of Win9x support.</p>
<h2 id="v1.1.19.00">1.1.19.00 - January 4, 2015</h2>
<p>Added a name for <code>Func.Call()</code>. <code>Func.()</code> still works but is deprecated.</p>
<p>Fixed some issues with <code>X.Y</code> and <code>X.Y(Z)</code> in VBScript/JScript/C#:</p>
<ul>
<li>If <code>X.__Call</code> contained a function <em>name</em>, it was being returned instead of called.</li>
<li>When <code>X.Y(Z)</code> returned a value, Z was ignored. Now it acts like <code>X.Y[Z]</code> when X.Y is not a function.</li>
</ul>
<p>Fixed the Hotkey command ignoring the ~ (pass-through) prefix if <em>Label</em> was omitted.</p>
<p>Fixed the Hotkey command ignoring the $ (use-hook) prefix if the hotkey variant was already created without $.</p>
<p>Fixed <code>%Fn%()</code> syntax to work with JavaScript Function objects.</p>
<p>Fixed EXE manifest to disable UAC installer detection heuristics (broken by v1.1.17).</p>
<p>Improved the way threads are represented on the debugger's call stack.</p>
<ul>
<li>The type of thread is shown instead of the label name, which is still available in the next stack entry. For hotkeys, the hotkey is shown instead.</li>
<li>The line number of the sub or function that the thread called is shown instead of the line the script was at before starting the thread.</li>
</ul>
<h2 id="v1.1.18.00">1.1.18.00 - December 30, 2014</h2>
<p>Improved IDispatch implementation for AutoHotkey objects:</p>
<ul>
<li><code>X.Y</code> in VBScript and C# now returns X.Y if it is NOT a Func object; previously, it attempted to call X.Y() regardless of type.</li>
<li><code>X(Y)</code> in VBScript, JScript and C# now returns X[Y] unless X is a Func object, in which case it is called as before.</li>
<li><code>X[Y]</code> in C# now returns X[Y] if X is NOT a Func object; previously, it attempted to call X[Y]() regardless of type.</li>
<li><code>X.Y()</code> in C# now returns X.Y if it is NOT a Func object, due to ambiguity in the C# dispatch implementation.</li>
<li>Unhandled exceptions are now converted to IDispatch exceptions.</li>
</ul>
<p>Added support for creating new properties in JavaScript/IE DOM objects.</p>
<p>Fixed <code>FileAppend, %VarContainingClipboardAll%, File</code> causing crashes.</p>
<h2 id="v1.1.17.01">1.1.17.01 - December 28, 2014</h2>
<p>Fixed COM event handlers not receiving the final object parameter.</p>
<h2 id="v1.1.17.00">1.1.17.00 - December 27, 2014</h2>
<p><strong>New features:</strong></p>
<p>Added <a href="commands/Format.htm">Format()</a>.</p>
<p><a href="commands/FileOpen.htm">FileOpen()</a> can now be used to read from stdin or write to stdout or stderr by passing <code>"*"</code> or <code>"**"</code> as the filename. <code>AutoHotkey.exe *</code> can be used to execute script text piped from another process instead of read from file. For an example, see <a href="commands/Run.htm#ExecScript">ExecScript()</a>.</p>
<p>Added support for passing AutoHotkey objects to COM APIs as IDispatch.</p>
<p>Added support for VT_BYREF in ComObject wrappers. Use <code>obj[]</code> to access the referenced value.</p>
<p><strong>Bug-fixes:</strong></p>
<p>Fixed blue-screening on XP SP2.</p>
<p>Fixed owned ComObjArrays to be returned by value, not by pointer. That is, a copy of the array is returned instead of a pointer to an array which is about to be deleted.</p>
<p>Changed the URL in the sample script which is created when you first run AutoHotkey.</p>
<p>Fixed <code>sc15D</code> to map to <code>vk5D</code>/AppsKey (Send, GetKeyName, etc.).</p>
<p>Fixed Edit controls to not treat AltGr+A as Ctrl+A.</p>
<p>Fixed static class vars to not act as a target for labels which immediately precede the class.</p>
<h2 id="v1.1.16.05">1.1.16.05 - September 28, 2014</h2>
<p>Fixed x.y/[]/{} sometimes falsely being flagged as variadic.</p>
<h2 id="v1.1.16.04">1.1.16.04 - September 16, 2014</h2>
<p>Fixed a crash which occurred when overwriting a non-writable property.</p>
<p>Fixed a crash which occurred when a RegExMatch object is created with uncaptured subpatterns during a regex callout.</p>
<h2 id="v1.1.16.03">1.1.16.03 - September 11, 2014</h2>
<p>Fixed some bad behaviour in Abs() and Mod() caused by a broken bug-fix in v1.1.16.01.</p>
<h2 id="v1.1.16.02">1.1.16.02 - September 11, 2014</h2>
<p>Fixed parser to allow #include inside a class (broken by a6ea27f).</p>
<p>Fixed Clipboard returning binary CF_HDROP data in some instances.</p>
<p>Improved accuracy of FileGetSize on files which are still open.</p>
<p>Improved for-loop compatibility with COM objects.</p>
<h2 id="v1.1.16.01">1.1.16.01 - September 10, 2014</h2>
<p>Added syntax for defining dynamic <a href="Objects.htm#Custom_Classes_property">properties</a> in classes.</p>
<p>Added x+m and y+m options for Gui control positioning.</p>
<p>Added the #InputLevel of each hotkey to ListHotkeys (when non-zero).</p>
<p>Optimized RegExMatch with the O (object) option; capturing part of a long string is much faster than before in some cases.</p>
<p>Fixed objects to check for new methods after __Call completes (consistent with __Set and __Get).</p>
<p>Fixed some undefined behaviour occurring after VarSetCapacity fails.</p>
<p>Fixed FileRead to correctly report an error with files over 4GB, instead of truncating even when it wasn't requested.</p>
<p>Fixed FileRead *c to null-terminate correctly when byte length is odd.</p>
<p>Fixed some ClipboardAll issues and changed behaviour:</p>
<ul>
<li><a href="commands/_ClipboardTimeout.htm">#ClipboardTimeout</a> is ignored for GetClipboardData(), since it never actually worked and it caused problems. This fixes timeouts and lost data when a file is on the clipboard (any file on Windows 8, or any file in a zip file or similar).</li>
<li>Zero-length clipboard items are allocated 1 byte upon restoring to the clipboard, since setting a zero-length item seems to always fail.</li>
<li>The presence of MSDEVColumnSelect/MSDEVLineSelect is now preserved when set by Scintilla, though any data set by VS is discarded.</li>
<li>When writing ClipboardAll directly to file, it now prefers Unicode (other usages of ClipboardAll have had this behaviour since v1.1.08).</li>
<li>ClipboardAll and FileRead *c on Unicode builds now round length up when odd. This increases the reported StrLen by 1, potentially avoiding truncation of the last byte.</li>
</ul>
<p>Fixed A_EventInfo for TreeView items with negative screen coords.</p>
<p>Fixed a possible ListView/TreeView message filtering issue.</p>
<p>Fixed A_LineFile/A_LineNumber in #If expressions.</p>
<p>Fixed #If to add itself to ListLines (though as "If").</p>
<p>Fixed <code>Abs(["-"]*)</code> and similar crashing the program.</p>
<p>Fixed <code>} funcdef(){</code> globally and <code>}}</code> ending a method/property/class.</p>
<h2 id="v1.1.15.04">1.1.15.04 - August 12, 2014</h2>
<p>Fixed a performance issue with <code>&var_containing_long_string_of_digits</code>.</p>
<p>Fixed built-in variables corrupting memory when an object is assigned.</p>
<p>Fixed parser to disallow <code>continue</code> where appropriate even if the current function is defined inside a Loop.</p>
<p>Fixed <code>File.Encoding := x "-RAW"</code> breaking encoding/decoding of non-ASCII characters. The <code>-RAW</code> suffix is now ignored.</p>
<h2 id="v1.1.15.03">1.1.15.03 - August 2, 2014</h2>
<p>Fixed meta-functions to exit the thread correctly after using Exit or Throw.</p>
<p>Fixed FileInstall to use A_WorkingDir when Dest is relative in a non-compiled script.</p>
<h2 id="v1.1.15.02">1.1.15.02 - July 7, 2014</h2>
<p>Fixed debugging negative integer keys in objects.</p>
<h2 id="v1.1.15.01">1.1.15.01 - June 30, 2014</h2>
<p>Changed built-in error and warning dialogs to be always-on-top.</p>
<p>Fixed <code>Until</code> not breaking out of recursive file/registry loops.</p>
<h2 id="v1.1.15.00">1.1.15.00 - May 4, 2014</h2>
<p>Added A_OSVersion value <code>WIN_8.1</code>.</p>
<p>Changed the Hotkey command to apply/remove passthrough behavior on existing hotkey variants depending on whether the <a href="Hotkeys.htm#Tilde">tilde (~) prefix</a> is present.</p>
<p>Changed exe manifest to allow <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms724439">GetVersion</a>/<a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms724451">GetVersionEx</a> to detect Windows 8.1.</p>
<h2 id="v1.1.14.04">1.1.14.04 - April 25, 2014</h2>
<p>Fixed DllCall() crashing the script when <em>Function</em> is pure integer 0.</p>
<p>Fixed <code>IsFunc("ComObj(")</code> to return false instead of throwing an exception.</p>
<p>Fixed ControlClick to send XButton1/XButton2 correctly.</p>
<h2 id="v1.1.14.03">1.1.14.03 - February 14, 2014</h2>
<p>Fixed a memory leak in <code>new X</code> when <code>X.__Init</code> aborts the thread.</p>
<p>Fixed breakpoints shifting onto class var initializers when they are interspersed with method definitions.</p>
<h2 id="v1.1.14.02">1.1.14.02 - January 30, 2014</h2>
<p>Fixed <code>x::</code> and <code>x up::</code> both firing on key-up if the state of the modifier keys prevented x from firing on key-down. The intended behaviour as of v1.1.14 is for both hotkeys to fire on key-up if x is also used in a custom combination like <code>x & y::</code>.</p>
<h2 id="v1.1.14.01">1.1.14.01 - January 15, 2014</h2>
<p>Fixed Try without Catch/Finally crashing if no exception was thrown.</p>
<h2 id="v1.1.14.00">1.1.14.00 - January 15, 2014</h2>
<p>Added <a href="commands/Finally.htm">Finally</a> statement for performing cleanup after try/catch. [fincs]</p>
<p><b>Changed behaviour</b> of <a href="Hotkeys.htm#Tilde">~ prefix</a> with custom combos to be more intuitive.</p>
<p>Fixed <code>x & y::</code> to fire both <code>x::</code> and <code>x up::</code> when x is released.</p>
<p>Fixed ImageSearch to set ErrorLevel=2, not 0, when a GDI call fails.</p>
<p>Fixed EnvGet crashing the program when the var exceeds 32767 chars.</p>
<p>Fixed a minor error-handling bug with StatusBarWait's ErrorLevel.</p>
<p>Fixed a cause of heap corruption with FileRead *c on ANSI builds.</p>
<p>Fixed passing of local vars in recursive calls to variadic functions.</p>
<p>Fixed script failing to load if the first line is an expression in parentheses.</p>
<p>Fixed PixelSearch Fast mode to set OutputVarX/Y only on success.</p>
<h2 id="v1.1.13.01">1.1.13.01 - October 11, 2013</h2>
<p>Fixed variadic function calls with named values for required parameters.</p>
<h2 id="v1.1.13.00">1.1.13.00 - August 27, 2013</h2>
<p>Ported <a href="commands/StrSplit.htm">StrSplit()</a> from v2 alpha.</p>
<h2 id="v1.1.12.00">1.1.12.00 - August 14, 2013</h2>
<p>Optional parameters can be omitted by writing two consecutive commas, as in <code>InStr(a, b,, 2)</code>. Unlike previous versions, this now works for objects (including COM objects) and built-in functions. <code>[a,,b]</code> can be used to create a sparse array.</p>
<p>Object properties can now be set using variadic syntax, as in <code>x[y*]:=z</code>, where y contains an array of keys/indices or parameters.</p>
<h2 id="v1.1.11.02">1.1.11.02 - July 28, 2013</h2>
<p>Fixed GuiControl/Get to accept the ClassNN of a ComboBox's child Edit. Specifying the HWND of a ComboBox's child Edit was already supported as a means of identifying the ComboBox.</p>
<h2 id="v1.1.11.01">1.1.11.01 - June 25, 2013</h2>
<p>Fixed InputBox default width/height (broken by v1.1.11.00 - commit <a href="https://github.com/Lexikos/AutoHotkey_L/commit/7373cc6443">7373cc6443</a>).</p>
<p>Fixed DllCall arg type validation to handle SYM_OBJECT safely, and to respect #Warn UseUnset (when var name is not a valid type).</p>
<p>Changed VarSetCapacity(var) to never warn about uninitialized vars.</p>
<h2 id="v1.1.11.00">1.1.11.00 - June 21, 2013</h2>
<p>Added support for <code>%A_LineFile%</code> in <a href="commands/_Include.htm">#Include</a>.</p>
<p>Reduced the file size of AutoHotkeySC.bin by reducing the resolution of the (rarely used) filetype icon.</p>
<p>Fixed <code>class X extends Y</code> to allow Y to be defined after X.</p>
<p>Developed by fincs: AutoHotkey is now DPI-aware. The Gui commands automatically compensate when DPI is not 96. See <a href="commands/Gui.htm#DPIScale">Gui -DPIScale</a>.</p>
<h2 id="v1.1.10.01">1.1.10.01 - May 17, 2013</h2>
<p>Improved RegRead to support REG_BINARY values larger than 64K.</p>
<p>Improved RegWrite to support REG_BINARY/REG_MULTI_SZ values larger than 64K.</p>
<p>Fixed Process Close (and possibly other things) on Windows XP.</p>
<h2 id="v1.1.10.00">1.1.10.00 - May 11, 2013</h2>
<p>Added basic support for <a href="commands/GuiControls.htm#Custom">custom Gui control types</a>.</p>
<p>Revised <a href="commands/SoundSet.htm">SoundSet</a>, <a href="commands/SoundGet.htm">SoundGet</a> and 'WaveVolume commands to better support Windows Vista and later.</p>
<p>Fixed <code>Run "<file>" <args></code> to not pass the space as part of the args.</p>
<p>Fixed some issues with reading from console input (CONIN$).</p>
<h2 id="v1.1.09.04">1.1.09.04 - March 14, 2013</h2>
<p>Fixed Gui menu accelerator keys not working when the Gui itself (not a control) has focus.</p>
<h2 id="v1.1.09.03">1.1.09.03 - February 9, 2013</h2>
<p>Fixed <a href="https://www.autohotkey.com/board/index.php?showtopic=89624">two bugs</a> which affected certain assignments where the target variable contains an unflushed binary number but has zero capacity.</p>
<p>Fixed GuiControl and GuiControlGet acting on the wrong control when given a HWND which does not belong to the current Gui. Instead, the condition is treated as an error.</p>
<p>Fixed OnMessage functions to set A_Gui and A_GuiControl correctly when the target Gui is a child window.</p>
<h2 id="v1.1.09.02">1.1.09.02 - December 24, 2012</h2>
<p>Fixed MsgBox to show an error message when given invalid Options, instead of silently exiting the thread.</p>
<p>Fixed syntax errors in class var initializers causing the program to crash without the proper error message.</p>
<h2 id="v1.1.09.01">1.1.09.01 - December 15, 2012</h2>
<p>Fixed AND/OR following a multi-statement comma, like <code>((x, y) and z)</code>.</p>
<p>Fixed RegExReplace to support duplicate subpattern names correctly.</p>
<p>Fixed Object.Remove() not freeing string keys.</p>
<p>Fixed base.Invoke() to not depend on dynamic variable resolution.</p>
<h2 id="v1.1.09.00">1.1.09.00 - November 7, 2012</h2>
<p><strong>Breaking changes:</strong></p>
<p>Removed <a href="misc/AutoIt2Compat.htm">.aut file compatibility</a> and #AllowSameLineComments.</p>
<p>Removed undocumented AutoIt v2 commands.</p>
<p><strong>Backward-compatible changes:</strong></p>
<p>Allow optional parameters to be declared with <code>:=</code> instead of <code>=</code>, for consistency with variable declarations and expressions.</p>
<p>Allow non-ASCII characters in unquoted keys (<code>{<b>key</b>: x}</code> and <code>obj.<b>key</b></code>).</p>
<p>Changed name in version info from "AutoHotkey_L" to "AutoHotkey".</p>
<p><strong>Bug-fixes:</strong></p>
<p>Fixed instability caused by warning dialogs appearing part-way through evaluation of a command's args.</p>
<p>Fixed PixelSearch Fast mode treating "not found" as an error.</p>
<p>Fixed ahk_exe to allow other ahk_ criteria after it.</p>