KMmacro Tips 第二弾です。
⇒ 第一弾の記事はこちら
■ いつでもキャンセルできる sleep
delay 命令を使えばカンタンに sleep できます。
しかし、その間はマクロ実行をキャンセルできない、という問題があります。
たとえば、
SetBreakkey [Shift] ; ESCはうまく効かないことがあるので…
としておいても、delay 命令の実行中に Shift キーを押してもキャンセルできません。
そこで、短時間の delay 命令を繰り返し実行する関数を使います。
:SLEEP_WITH_YIELD
if (< %sleepPeriod 1) goto :SLEEP_WITH_YIELD_END
if (< %sleepPeriod 200) goto :SLEEP_WITH_YIELD_LAST
dec %sleepPeriod 200
delay 200
goto :SLEEP_WITH_YIELD
:SLEEP_WITH_YIELD_LAST
delay %sleepPeriod
:SLEEP_WITH_YIELD_END
set %sleepPeriod 0 ; 念のためリセット
return
メインルーチンではあらかじめ変数宣言が必要です。
DIM %sleepPeriod ; SLEEP_WITH_YIELD ルーチン用(非保持)
あとは、delay 命令の代わりにこの関数を call するだけ。
set %sleepPeriod 5000
call :SLEEP_WITH_YIELD
これで5秒間 sleep しますが、その間いつでもマクロの実行をキャンセルできます。
上記の関数定義は独立ファイルにしておいて、各マクロで include するのがオススメです。
« WordPress のサーバ移行 |
トップページ
| KMmacro (その3) »