DoNothingの使い道を全力で考える
DoNothingという、超マニアックでDOR好みなアプリが登場しました。
以下マニュアルより
【概要】
指定したタイトルのウィンドウをバックグラウンドで起動するだけの、
単体ではまったく意味の無いソフトです。
ExecIf(ももたろさん製作)と連携することを想定しています。
例えば、本アプリで起動したウィンドウのタイトルによって
擬似的に「状態」を管理することで、あるアプリケーションを
実行する際に1回目と2回目で起動パラメータを変更できます。
要するにDoNothingは「タイトルだけあって何もしないアプリ」なのです。以前紹介した ExecIfと組み合わせることで、ExecIfだけではできない複雑な処理が出来るようになります(逆にExecIfだけで出来ることではDoNothingを使う意味がありません)
ということで何ができるかいろいろ考えてみました。
使用例
- 同一アプリを別の引数で起動(A→A'→A''→・・・を実行)
- サンプルについてるMCHARでの使用例ですね
- ExecIf単体では1つのアプリに対して未起動、起動中の2つを超える処理は設定できません
- 複数アプリの完全トグル起動(A→B→C→・・・を実行)
- DoNothingが現在の状態を保持するので、起動したアプリを終了しても、その次のアプリからトグル起動できます
- ExecIf単体では該当アプリの終了後は、また最初からトグルする必要があります
- あるアプリの特定状況のみで特定の処理を行う(Aが状態A'ならばA''を実行)
- 特定状況でDoNothingを起動/解除するように設定する
- ExecIf単体では特定の状況を判別することができません
- 繰り返しマクロ内での振り分け(行AではA'、行BではB'を実行)
- RunClip等と併用して各行それぞれの引数でDoNothingを起動し、ExecIfで引数に応じた処理を実行する
- ExecIf単体では振り分け処理は実現できません
- タイマー処理(A実行後n秒以内ならA'、それ以降はB'を実行)
- ExecMultiでDoNothingを起動し、n秒経過後にDoNothingを終了するように設定する
- ExecIf単体では(略
- ExecDoubleと併用すると、さらに複雑な処理が行えます
実践
ということで試しに以下のようなスタートキーを設定してみました。
- ExecDoubleで以下のように設定
- スタートキーを1度押しすると以下のExecIf起動
- 通常はTaskMan起動+1000mSecタイマー(以下のExecMulti)起動
- DoNothing(title:1000mSec)起動=常駐
- 1000ミリ秒待機
- DoNothing(title:1000mSec)起動=常駐解除
- TaskMan起動後1000ミリ秒以内(1000mSec常駐中)だとRunner[es]起動
- それ以降はTaskManを二重起動(カーソル右送り)
- 通常はTaskMan起動+1000mSecタイマー(以下のExecMulti)起動
- スタートキーを150ミリ秒以内に2度押しするとToday表示
で、このスタートキーですが・・・微妙なもっさり感があって実用に耐えません(汗) これはDoNothingの問題ではなく、いろいろ詰め込み過ぎてるせいなんですが(汗汗)