無限ループから脱出せよ

ということでesがないのに、同じかそれ以上無印に向かってる時間が長いDORです。

以前、こちらの記事で、無限ループするマクロを作ったんですが、ループを途中で終了するには、画面タップを連打する必要があり、どうも美しくないんですよ。ってことで、ツール環境が整ってきた今、改めて無限ループをスマートに脱出する方法を考えてみました。

目的

自動下スクロールを実現する

概要

エディタやサイト閲覧時に使える、自動で下にスクロールする汎用マクロを作ります。
ボタン等から起動すると自動的に下キー入力を繰り返し、もう一度起動するとスクロール終了するように設定します。

使用アプリ

  • ExecMulti (ももたろ様)
    • 複数のアプリを連続して実行するツール
  • ExecIf (ももたろ様)
    • アプリの起動状況によってアプリを実行しわけるツール
  • DoNothing (392様)
    • ExecIf等で利用するためのダミーアプリを実行するツール

手順

  • 前述のアプリを\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単語一括登録マクロが作れそうな予感・・・作り直すかなぁ・・・・