無限ループから脱出せよ
ということでesがないのに、同じかそれ以上無印に向かってる時間が長いDORです。
以前、こちらの記事で、無限ループするマクロを作ったんですが、ループを途中で終了するには、画面タップを連打する必要があり、どうも美しくないんですよ。ってことで、ツール環境が整ってきた今、改めて無限ループをスマートに脱出する方法を考えてみました。
目的
自動下スクロールを実現する
概要
エディタやサイト閲覧時に使える、自動で下にスクロールする汎用マクロを作ります。
ボタン等から起動すると自動的に下キー入力を繰り返し、もう一度起動するとスクロール終了するように設定します。
使用アプリ
手順
- 前述のアプリを\Program Files\アプリ名\アプリ名.exeにインストールする
- 以下の内容を\Program Files\execif\execif_ScrollDown.iniとして保存する
[ScrollDown] class=DoNothing title=ScrollDown mode=exec sleep=1000 exec=\Program Files\execmulti\execmulti.exe|ScrollDown
- 以下の内容を\Program Files\execmulti\execmulti.iniに追加して保存する
[ScrollDown_Trigger] exec=\Program Files\DoNothing\DoNothing.exe|-execmode=TOGGLE -title=ScrollDown exec=\Program Files\execif\execif.exe|\Program Files\execif\execif_ScrollDown.ini [ScrollDown] exec=\Program Files\KeyInputEmulator\KeyInputEmulator.exe|Down exec=\Program Files\execif\execif.exe|\Program Files\execif\execif_ScrollDown.ini
- ランチャーやボタン等に以下の内容を割り当てる
- プログラム:\Program Files\execif\execmulti.exe
- パラメータ:ScrollDown_Trigger
- 上記を実行し、いろいろなアプリで下スクロールして楽しむw
解説
DoNothingは起動時にトグルで常駐/解除を切り替えることができるので、これをExecIfと組み合わせてループの制御に使っています。
- 初回起動時=DoNothingが常駐し、最初に1秒待ってから下キーのループ開始
- 次回起動時=DoNothingが解除され、最後の下キーを押して終了
となります。
また、ExecMultiの処理中には別のExecMultiを起動できないことに注意が必要です。そこで、
- スリープ処理はExecMultiではなく、ExecIfで行う
- スリープ処理を行ってから、ExecMultiを呼び出す
にする必要があり、最初に1秒待って、最後に下キーが押されてしまうわけです。これをCondExecを併用して改善する方法もあるんですが、知りたい方っていますかね?(^^;
ということでExecIf・DoNothingタッグの新活用法、いかがでしたでしょうか。これを使えばもう少しマシなATOK単語一括登録マクロが作れそうな予感・・・作り直すかなぁ・・・・