ツールチップを自動で消えるようにする関数

ツールチップを自動で消えるようにする関数

ツールチップに色々情報を表示するのは便利なのだが、AutoHotkeyのTooltipコマンドは、空のツールチップを出すまで残り続けてしまう面倒な仕様だったりする。

そこで今までは以下のようにSleepで表示したい時間を確保していた。

Tooltip, text
Sleep, 1000
Tooltip,

ところが、これだとSleepの間再度同じホットキーを入力しようと思ってもできない。連続でホットキーを使いたい場合には不向きだ。

そこで、色々調べていたら、SetTimerの間隔を負の数値にすれば一回だけ実行してくれるので、それを使ってツールチップを消すラベルに飛べばいいことがわかった。

ググッたらその通りの機能を関数にしてる人がいたので、http://pc12.2ch.net/test/read.cgi/software/1253888736/984より拝借。

AutoHideTooltip(Txt, Time, X="", Y="")
{
  Tooltip, %Txt%, %X%, %Y%
  SetTimer, AutoHide, -%Time%
  Return
  AutoHide:
    Tooltip, 
  Return
}

これを適当なところに書いておいて、ツールチップを使うときには

AutoHideTooltip("1秒後に消える", 1000)
AutoHideTooltip("X100、Y100の位置に出て3秒後に消える", 3000, 100, 100)

というように表示テキストと表示時間、必要に応じて表示位置を入れればいい。

テキスト部分は、引用符の外に書けば変数も演算も可能。