Ver.1.0.38.01
ビルドインファンクションが2つほど増えたらしいので試してみた
IsLabel(LabelName) ラベルの有無を調べられる関数。
Label = sub1 Gosub,%Label%
AutoHotkeyは上のように変数内にラベル名を入れて飛び先を指定できるが、存在しないラベルにGosubしようとすると(当たり前なんだけど)スクリプトエラーで止まってしまう。まぁスクリプト内で直に変数に値つっこんでるならそもそも存在しないラベルを指定なんてしないわけですが、下みたいなiniから読み込んだ内容に基づいて飛び先指定する場合は重宝しそう。
[MenuName] MenuItemName1 = Label1 MenuItemName2 = Label2
Gosubの前にIsLabel()入れれば簡単にエラー回避できますな。今までは.ahkファイルをテキスト読込みして 該当ラベルが存在するか舐めてチェックしてたので結構助かるかも。
OnMessage(MsgNumber [, "FunctionName"]) SendMessageの待ち受けができるみたい
取れるのは自分(AutoHotkey)に対して送られてきたMessageだけみたいでちょっと(´・ω・`)
せっかくだから他のウィンドウへのMessageの盗み見/横取りもできたら嬉しかった。
2ちゃんや流行らせるBBS見ると IMEのON/OFF状態でカーソルを変化させたいって要求が結構あるみたいだけど、任意(又は全部)のウィンドウにWM_IME_CONTROLが送られたらイベント発生ってのができればいけそうなんだがな。(現状だと Loopや SetTimer で SendMessage投げ続けなければならず重すぎてお話しにならないっぽい)
あとRedirectWheelなんかも本来はアクティブウィンドウへ送られてきたホイールメッセージを横取りしてマウスカーソル上のウィンドウへ渡すってなことをするらしい。まぁこれは WheelUp/Downをホットキー登録してやれば同等のことができるから別に困ってはいないんだけど。