v1.1からv2.0への変更点は、v1.1とv2.0の相違点をカバーしています。
変更点の技術的な詳細については、GitHubを参照してください。
Fixed memory out-of-bounds access during RegEx compilation.
Fixed externally-released modifiers to not be "restored" post-Send.
モーダルダイアログボックスがInputHookイベントを抑制する問題を修正しました。
キーのリピートが押された後にキーアップが誤って抑制される問題を修正しました。
アルファチャンネルのない大きなアイコンを読み込む際のクリティカルエラーを修正しました。
ClassNNが特定できないとき、コントロールをブランクにしてエラーをスローしないようにMouseGetPosを修正しました。
FileSelect関数がオプションを検証するように修正。
Catch/Else/Finally/Untilが予期せずエラーとしてフラグされない場合があったのを修正しました。
Elseを返したときにFinallyを実行しないようにTry/Catch/Else/Finallyを修正しました。
ファット・アロー関数を含むif-else-if-else-ifの動作を修正しました。
GetClipboardDataがNULLを返したときにA_Clipboardが警告なしに終了するのを修正しました。
a.b[c] := dでセッターがないとき、a.bのゲッターを呼び出すように修正しました。
DescoladaによるWinTextパラメータの最適化を実装しました。 [PR #335]
変数名の後に"same name as a global "を追加する代わりにグローバル宣言を提案するようにUnsetErrorメッセージを変更しました。
UnsetErrorとの一貫性を保つためにVarUnsetの警告メッセージを変更しました。
varが未設定のときにTypeErrorではなくUnsetErrorをスローするようにincrement/decrement演算子を修正しました。
プロパティがそれ自身を削除するときにプロパティの名前を安全に割り当てるようにOwnPropsを修正しました。
ブロックのない制御フローステートメント中のアロー関数でブレークポイント機能するよう修正しました。
関数からステップアウトするときに、呼出行でブレークするようにデバッガを修正しました。 (この動作はリビジョン31で追加され、v1.1.30.00で壊れました。)
新しいスレッドとして呼び出された関数からのステップアウトするときは、次の行に到達するまで待つのではなく中断された行でブレークするようになりました。
DBGp property_getまたはcontext_getの評価中に無視される一時的なブレークポイントをデバッガが削除しないように修正しました。
stdoutに送信されるロードタイムエラーにファイル/行番号が正しく表示されないことがあった問題を修正しました。
ロード時のエラー/警告ダイアログでExitApp関数が終了コード2を使用するように修正しました。
カレントユーザー(非管理者)でのインストールでWindowSpy.ahkの場所を修正しました。
DBGpのproperty_getのページング項目が(再び)間違っていたのを修正しました。
Length/Buffer が指定されてMultiByteToWideChar がターゲットコードページのWC_NO_BEST_FIT_CHARSフラグをサポートしていないときにStrPut が失敗するように修正しました。
サーバーがクライアント認証を要求したときに、匿名認証を試みるようにダウンロードを修正しました。
v2.0.14以降、誤ったページングのために、DBGp property_getがプロパティを取得できない問題を修正しました。
v2.0.14 以降、DBGpプロパティを評価するときにTry without Catchが失敗する問題を修正しました。
v2.0.14以降、<base>デバッガの擬似プロパティが参照をリークする問題を修正しました。
テキストがフォーカスされているときでも文字キーのショートカットを処理するようにエラーダイアログを修正しました。
MonthCalコントロールの横に複数月を表示するW-nオプションがDPIスケーリングの影響を受けないように修正しました。
Click関数が整数を返す問題を修正しました。
key::try {がエラーとして検出される問題を修正しました。
ホットストリング:B0*O:XY::Zが、XZではなく正しくXYZと出力されるように修正しました。
キーが物理的に押されたままになったとしてもそれ以前の{modifier Down}<//c0> が有効なままになるようSendを修正しました。
メニューポップアップが表示されたときにフォーカスするスクリプトの信頼性が向上しました。
デバッガの改善:
保留中のレスポンスを別のコマンドの処理中に送信されるstdout/stderrパケットが損なわないように修正しました。
property_get -n <exception>.messageなどを修正しました。
プロパティがx.y.z where y => {z:"a"}のような文字列を含むテンポラリオブジェクトを返すときに、property_getが返す結果の不具合を修正しました。
コマンドの処理中に別の非同期コマンドを受信するとクラッシュしてしまう問題を修正しました。
例外がproperty_setによって抑制された後に削除されない問題を修正しました。
property_get -c 0 -d 0が-d 1で既に許可されているようにグローバル変数を使用できるようにを修正しました。
Fixed property_get paging enumerated items incorrectly.
Improved property_get to support property getters with one parameter (previously only the implicit __Item property supported this).
Improved property_get to support properties of primitive values. The value must still be contained by a variable or returned from a property.
パラメータを<=1にすることで関数を呼び出せるようにproperty_getを改善しました。
Improved property_get to support float keys/parameters.
プロパティの評価中に例外を抑制するように変更しました。
__Enumがスローしたエラーを項目なしとみなして無視するようにデバッガを変更しました。
Changed the <enum> pseudo-property to require __Enum. これにより、オブジェクト自体がEnumratorとして呼び出されなくなりました。
Small code size optimizations in the debugger.
Hotkey関数に無効なオプションが含まれているときにValueErrorをスローするように変更しました。
バックスペースがやり直しに割り当てられているときに+Sオプションを参照するようにInputHook関数を修正しました。
列挙中のプロパティを安全に削除できるようにデバッガを修正しました。
エラーダイアログのテキストなど、OLEクリップボードの内容が終了時に失われる問題を修正しました。
Hotkey "a pu"のような、無効な接尾辞の検出を修正しました。
Fixed DllCall AStr* arg type to copy back only if address changes.
Fixed #Include to correctly "close" any built-in variable it reads (no known impact on real-world scripts).
WinTitles関数が2つの異なるahk_idを持つウィンドウにマッチしないのを修正しました。
Guiにオーナーウィンドウまたは+DPIScaleがある場合のGui GetPos/GetClientPosを修正しました。
ファイルループでのサブフォルダーの再帰を防止するようにUntil文を修正しました。
Fixed DllCall to throw when arg type is UStr.
regEx calloutのたびにメモリリークが起きるのを修正しました。
Fixed Send erroneously releasing a modifier due to a race condition. For example, ~LAlt::Send "{Blind}x" intermittently released LAlt if some other keyboard hook was installed more recently than the script's own hook.
Fixed icon loader to prefer higher bit-depth when multiple bitmaps of the same size are present.
Fixed SendInput failing to release LCtrl if it had already released RAlt and the layout does not have AltGr.
Fixed key-up hotkeys not firing if the key repeats after modifiers change. For example, F1::Send "{Ctrl down}" should allow F1 up:: to execute when the key is released even though Ctrl is down, but was not allowing it after key-repeat occurs.
#IfWinではなく#HotIfを参照するようにエラーメッセージを修正しました。[PR #327]
OwnPropsが誤ってオプションのパラメータを持つプロパティをスキップしていた不具合を修正しました。
Fixed inconsistent behaviour of cloned dynamic properties.
a.b[c] to evaluate as (a.b)[c]).Windowsがセーフモードの場合など、ネットワークサブシステムが機能していないときに重大なエラーが発生するSysGetIPAddresses関数を修正しました。
コンソールウィンドウがアクティブな場合など、フォーカスを決定できないときに ControlGetFocus関数が0を返すように変更しました。
Windows 10で最初に表示されるメニューがキーボード入力を受け付けない場合の回避策を追加しました。
DateTimeコントロールが短い日付形式を使えるようにAddメソッド(Gui)を修正しました。
Fixed a reference counting error with multi-level function nesting.
Fixed #include <x> causing a load-time crash if used inside a function.
ListView.Opt("NoSort")を修正しました。
プロパティを持たないオブジェクトが複製されたときに発生するメモリリークを修正しました。
Fixed #include and FileInstall (non-compiled) to compare file names ordinally, not linguistically.
HotIfの後に名前付き関数のホットキーを使用するとクラッシュする問題を修正しました。
数値リテラルがドットで終わるときに行が継続しないように修正しました。
Fixed pre-increment/decrement to work with chained array indexing.
Fixed OnNotify/OnCommand applying styles only applicable to OnEvent.
Fixed FileExist/DirExist leaking handles when emptydir\* is used.
Fixed DirExist leaking handles when only files match.
Fixed stacking of hotstrings with the X option.
Fixed debugger not listing local vars if the function is at the bottom of the stack.
Fixed Gui threads to show on the debugger's call stack.
Fixed some combinations of &/ByRef causing stack overflow in ExitApp.
Fixed ByRef parameters erroneously assigning the default value to the caller's VarRef if unset.
Fixed some issues affecting suppressed Alt/Ctrl/Shift/Win hotkeys, such as:
*LCtrl:: blocked LCtrl from the active window, but sending Alt-key combinations would fail because the system thinks Ctrl is down, and would therefore send WM_KEYDOWN instead of WM_SYSKEYDOWN.*LAlt:: caused the system to forget any prior {LAlt DownR}, so a remapping such as LCtrl::LAlt would not behave correctly while LAlt is physically down, even though LAlt was suppressed.Fixed some issues affecting continuation sections:
```` to become one literal ` instead of two, ``n to become a linefeed, and similar.`" or `' produced a literal backtick and ended the string, instead of producing a literal quote mark, if the continuation section was enclosed in quotes of the same type and lacked the ` option.Optimized the automatic escaping of quote marks and backtick in continuation sections.
Fixed breakpoint_list (debugger) returning duplicates on lines containing fat arrow functions.
+BackgroundDefaultがGuiのBackColorプロパティをオーバライドできない不具合を修正しました。
X1とY1を省略できるようにMouseClickDrag関数を修正しました。
マウスのAltTabホットキーが、1 & WheelDown::AltTabに1::を割り当てるようなプレフィックスホットキーの実行を抑制しないように修正されました。(v2.0.4で生じた不具合)
Fixed hook hotkeys not recognizing modifiers which are pressed down by SendInput.
Fixed A_AhkPath to not be reliant on the case/format of the command line used to launch the process.
Fixed heap corruption during window searches involving groups. (v2.0.6で生じた不具合)
ランチャー
#Requires の後に; prefer xxx以外のコメントが続くと、#Requiresが検出されない問題を修正しました。(v2.0.6で生じた不具合)
複数行にわたって自動で置換するホットストリングを誤って解釈する構文チェックを修正しました。
Window Spy
フォントを9ポイントのSegoe UIに変更してDashと統一しました。
x.yがx.y()として振る舞ってしまうなどのCOM呼び出しの曖昧さを修正しました。
制御フロー文のブレークポイントが、その下の行のファットアロー関数が値を返したときに「ヒット」するのを修正しました。
Fixed Default : to not merge with the line below it. This prevented Default : from being used at the end of a Switch block, and caused any subsequent line to take the line number of the Default.
プロセスへのアクセスが拒否されたときでも、有効なPIDが与えられた場合に全てのプロセスをスキャンしないようにProcessGetPath関数、ProcessSetPriority関数、および ProcessClose関数を最適化しました。
LWin::Altを使用しても一部のAltキーの組み合わせを有効にできない問題を修正しました。
x is yがスローするTypeErrorを「Object」ではなく「Class」と表示するように修正しました。
1023文字を超える条件をサポートするようWinTitleを修正しました。
&ref が同じ変数の異なるエイリアスで使用されている場合の問題を修正しました。
単純なリテラル値以外のオプションのパラメーターのデフォルト式がassume-global/assume-staticの使用を妨げる問題を修正しました。
オブジェクトがCOM経由で列挙されたときに、誤った参照カウントがメモリリークを引き起こす問題を修正しました。[PR# 325]
__Enumへの内部呼び出しが__Callを呼び出していたのを修正しました。
パラメータ#65535を参照するエラーメッセージを修正しました。
IEnumVARIANTが返す数が誤っているのを修正しました。
Download関数がOSErrorのエラーコードが0以外にもかかわらず、OSError(0)をスローするのを修正しました。
ListViewコントロールのAdd/Insert/Modifyメソッドに最小数のパラメータが渡されたときにクラッシュする問題を修正しました。
スタックトレースがErrorサブクラスの__newへの呼び出しを除外するように修正しました。
エラー/警告ダイアログのリロードボタンを、現在のスクリプトインスタンスが終了していなくても、明示的にダイアログを閉じるように変更しました。
finallyブロック内でアクセスすると変数が空白に表示される原因となっていたreturn varの最適化を削除しました。
デフォルト(Switch)でコロンの前にスペースが入るように修正しました。
Array.Prototype.RemoveAt がunsetまたはvar?でLengthが「明示的に省略」された場合に削除された値を返すように修正しました。
ComObjectが2番目の変数のみ指定されたforループに渡されるとクラッシュする問題を修正しました。
v1.1.37.00およびv1.1.37.01からの変更をマージ:
COMのメソッドとプロパティの呼び出しで、大きな整数をVT_R8(浮動小数点)ではなくVT_I8として渡すように変更しました。32ビット範囲の整数はVT_I4として渡されます。
IDispatchでラップされたAutoHotkeyオブジェクトで、多変数の列挙子(forループ)のサポートを追加しました。オブジェクトを呼び出すスクリプトとオブジェクト自体の両方が、サポートされているAutoHotkeyバージョンを実行している必要があります。
AutoHotkeyメソッドがIDispatch(COM)を介して呼び出された場合、省略されたパラメータが「オプション引数マーカー」ではなく、デフォルト値を受け取るように修正しました。逆変換は、以前のバージョンでCOMメソッドを呼び出すときにすでに行われていた。
VerCompare(a, ">" b)を修正し、コードサイズをわずかに縮小させました。
AltTab関連のロードタイムエラーを他のエラーと矛盾しないように修正しました。
ComObjectラッパーがオブジェクト/COM経由で呼び出された場合にスローされるエラーが正しく伝搬されない問題を修正しました。
ホットキーGUIコントロールを修正し、記号 ^、!と+をホットキーとして設定できるようにしました。
ホットキーコントロールの値がシンボルに設定されている場合、修飾子が含まれるように修正しました。
InputHook.KeyOpt()が単一の文字で誤動作する可能性があったのを修正しました。
カスタムコンボで、a & b::、a::、a up::のようなホットキーのセットが、#HotIfでa::だけが無効になっている場合、aのリリースを抑制できないバグを修正しました。
キーダウンイベントがホットキーによって正しく抑制されるが、SendLevel > 0で追加のキーダウンを送信すると、送信されたイベントが#InputLevelによって無視されても、それに続くキーアップが抑制されないというバグを修正した。
a & b:: が存在するが #HotIf によって無効化されている場合、a & b up::が bを抑制しないように修正しました。
競合状態によりホットキーが起動しない問題を修正しました。もし~*RWin::のようなモディファイアホットキーがSendやGetKeyStateを呼び出すのが早すぎると、OSはRWinがダウンしていないと報告する可能性があり、フックのモディファイアの状態が「修正」され、ホットキーが誤って発火したり、発火しなかったりします。この現象は、他のキーボードフックがスクリプト自身のフックよりも最近にインストールされた場合にのみ発生する可能性がある。その場合、他のフックのスレッドが再開して戻るまで、OSはキーの状態を更新しないからだ。
ホットストリングが#HotIfで設定されたLast Found Windowを使用するように修正しました。
OSが自動的にフックをアンインストールした場合、キーボードまたはマウスフックを再インストールしようとすると失敗する問題を修正しました。このような試みを行うには、やはり一定の条件を満たす必要がある。
組み込み IDispatch 用にキャッシュされた COM プロパティ名の割り当てが最適化されました。
DLL として AutoHotkey のビルド設定をサポートするようにコードをリファクタリングしました。
Hotkey("a", "b")が「a」ではなく、「b」の本来の機能を使うように修正。[PR #318]
FileSetAttribute をファイル読み込みループで使用するとクラッシュする問題を修正しました。[PR #323]
GUIコントロール名の重複エラーを修正し、スレッドを正しく中断するようにした。
DateTime/MonthCal Rangeオプションで最小値が適用されない問題を修正。
s[x] => xと「s」で始まる他の単一行のプロパティを修正。
=>を含む静的行のブレークポイントを削除する際のバグを修正。
ボタンコントロールをクリックするとデフォルトにならない問題を修正。
PixelSearchでピクセルが見つからなかった場合にXをセットしないように修正。
エスケープシーケンスが次の行をスキップするホットストリングを修正。
WinTitleで「ahk_」が2文字目にある場合、1文字目を無視するように修正。
右手モディファイアーがすでにダウンしていることを利用するようにリマッピングを修正。例えば、+x::+yは、RShiftを離してLShiftを押すことができなくなります。
a == b && c()と同様の場合のエラーメッセージを変更し、レガシー=を暗示しないようにしました。
意図しない行が続く場合のエラーメッセージを改善。
ドキュメントにあるように、予約語をメソッド名として許可するように修正しました。
一部のキーボード・メッセージのOnMessage呼び出しが重複していたのを修正しました。
相互参照されたクロージャが早期に削除される問題を修正しました。
SetFontを修正し、Optionsパラメータの先頭のスペースを許可するようにしました。
{ASC nnnn}の送信を修正しました。
a.base := aがエラーをスローするように修正しました。
x.y := unsetがクラッシュや未定義の動作を引き起こす問題を修正しました。
GUIがその親でない場合でも、GuiControl.Move()がGUIのクライアント領域に対して相対的になるように修正しました。
メニュー追加で、メニュー挿入で追加された項目が上書きされるのを修正しました。
ランチャーパラメータなしで実行した場合、ドキュメントの古いウェルカムページを表示する代わりにDashを実行します。
バージョン選択GUIで、バージョンを選択せずにEnterキーを押すとエラーが発生する問題を修正しました。[PR UX/#4]
不在のバージョンがダウンロード可能かどうかをチェックする際のエラーを抑制しました。
UACが無効になっている場合、UACシールドを表示しないよう、不在バージョンのダウンロードプロンプトを修正しました。
#Requiresディレクティブの解釈に関する問題を修正しました。
> >= < <= =をサポートしました。コマンドライン用のデフォルトのインストールディレクトリを修正しました。
スタートメニューのショートカットの名前を「AutoHotkey」から「AutoHotkey Dash」に変更しました。
SYSTEMとして実行中のEnableUIAccessを修正しました。
証明書の選択時にEnableUIAccessが秘密鍵を検証するように修正しました。
DashLaunch Config GUIを修正して「管理者として実行」および「UIアクセスで実行」オプションを更新しました。
Launch Config GUI上でのUp/Downキーの処理を修正しました。
Short DllCall の arg タイプと、無効なタイプに対する未定義の挙動を修正しました。
AutoHotkeyバイナリの非文字列のファイルバージョン番号を修正しました。
パラメータタイプのエラーで、正しいパラメータ番号が表示されるように修正しました。
Func.IsOptional(1)が0を返すべきでない場合があるのを修正しました。
Guiイベントハンドラ関数で、Guiがそれ自身のイベントシンクである場合に、Guiパラメータをドロップしないように修正しました。
COMのエラーで、説明文がない場合に「(null)」が表示されないように修正しました。
ToolTipが断続的に間違った位置に表示されるのを修正しました。
Array、Match、Guiで2つ目の変数を許可するように __Enum(unset)を修正ました。
#include<>のエラーメッセージが「関数ライブラリ」ではなく「スクリプトライブラリ」と表示されるように修正しました。
新規スレッドでCriticalによるメッセージチェックを防止できない問題を修正しました。
DllCallの型名の変換を最適化しました。
些細ですが効果的なコードサイズの最適化を行いました。
v2.0.0リリース以前の変更履歴は、以下を参照してください(ただし、一部の変更は上書きされていることにご注意ください):