真・無限ループから脱出せよ
前回までのあらすじ
無限ループからの脱出に成功したExecIf、DoNothing、ExecMulti。だが、ほっとするのもつかの間、新たな無限ループが目の前に立ちふさがるのであった。新アプリCondExecと協力し、今度こそ無限ループの完全撃破を目指すのだ!
目的
自動下スクロールをより完璧に実現する
概要
前回の無限ループ処理方法には、
また、ExecMultiの処理中には別のExecMultiを起動できないことに注意が必要です。そこで、 -スリープ処理はExecMultiではなく、ExecIfで行う -スリープ処理を行ってから、ExecMultiを呼び出す にする必要があり、最初に1秒待って、最後に下キーが押されてしまうわけです。
という欠点がありました。また理論的には、10/1000=0.1%ぐらいの確率(ExecMultiが処理中のとき)で正常動作しないはずです。
これをCondExecを併用することで改善します。
使用アプリ
手順
- 前述のアプリを\Program Files\アプリ名\アプリ名.exeにインストールする
- 以下の内容を\Program Files\CondExec\CondExec.iniに追加して保存する
[ScrollDown] class=DoNothing title=ScrollDown check=current trigger=running exec=\Program Files\execmulti\execmulti.exe|ScrollDown
- 以下の内容を\Program Files\execmulti\execmulti.iniに追加して保存する
[ScrollDown] exec=\Program Files\KeyInputEmulator\KeyInputEmulator.exe|Down sleep=1000 exec=\Program Files\CondExec\CondExec.exe|-execmode=open -section=ScrollDown
- 以下の内容を\Program Files\execif\execif_ScrollDown.iniとして保存する
[ScrollDown_End] class=DoNothing title=ScrollDown mode=exec exec=close [default] exec=\Program Files\execmulti\execmulti.exe|ScrollDown exec=\Program Files\DoNothing\DoNothing.exe|-execmode=open -title=ScrollDown
- ランチャーやボタン等に以下の内容を割り当てる
- プログラム:\Program Files\execif\execif.exe
- パラメータ:\Program Files\execif\execif_ScrollDown.ini
- 上記を実行し、いろいろなアプリで下スクロールして楽しむw
解説
前回の処理は、
- ExecMulti(ScrollDown_Trigger)
- ExecIf(ScrollDown) ←ループ判定+1000ミリ秒待ち
- ExecMulti(ScrollDown) ←下キー
- (繰り返し)
のように、ExecIfとExecMultiのループになっていました。ExecMultiが同時起動に対応していないので、ExecIf処理中しかExecMulti(ScrollDown_Trigger)を起動できないという制約がありました。
今回の処理ではCondExecを併用することで、
- ExecIf(default)
- ExecMulti(ScrollDown) ←下キー+1000ミリ秒待ち
- CondExec(ScrollDown) ←ループ判定
のように、ExecMultiとCondExecのループになっています。これでループ状況と無関係にExecIfを呼び出せます。すると制約がなくなるので、
- スリープ処理をループ内のどちらのアプリからでも行える
- スリープ処理を任意のタイミングで行える
ことになり、処理の最適化をしてやると初回も最速で下キー入力され、最後も余計な下キー入力が行われないわけです。
え〜、某所でリクエスト頂いたんでまとめてみましたw でも、前回より複雑になったにも関わらず、体感的にはそんな大差ありません。単なる自己満足です、ぐふ。
あと余談ですが、CondExecは同時起動に対応してるため、ExecIfをCondExec+ExecMultiに置き換えることも出来ます、多分。興味のある方は宿題としてどうぞw