ExecIfとDoNothingの美味しい関係

以前紹介した、文字通り何もしないツール「DoNothing」がVer0.20にバージョンアップされました。Ver0.10で要望した点を全部対応していただいたうえに、便利な機能まで追加されてます。

ということで作者様へのお礼を兼ねて、DoNothingの活用例でございます。

目的

0号テキストエディタで、フォントサイズをトグル的に切り替える。

概要

W-ZERO3の定番エディタである0号テキストエディタには、フォントサイズを4つ設定しておき、それぞれCtrl+1〜4で切り替える機能があります。これを1つのボタンでトグル的に切り替えできるように設定します。
※0号テキストエディタはクラス名が起動のたびに変わるため、この方法ではうまくいきません。W-ZERO3 UtilityPlusなり運用なりで0号テキストエディタ起動中のみ使うことで乗り切ってください・・・

使用アプリ

  • ExecIf
    • アプリの起動状況に応じてアプリを起動するツール
  • DoNothing
    • 指定したタイトルのダミーアプリをバックグラウンドで起動するツール
    • ExecIfとDoNothingを組み合わせることで非常に便利な活用ができます
  • KeyInputEmulator
    • 指定したとおりにキー入力を再現してくれるツール
  • ExecMulti
    • アプリを指定した順に連続実行するツール

作業手順

  • 前述のアプリを\Program Files\アプリ名\アプリ名.exeでインストールしておく
  • 以下の内容を\Program Files\execif\execif.iniに追記する
    • お好みで別のiniファイルにしても大丈夫です
[0号テキストエディタ]
class=Afx:22401fc6:b:7f00:20021:7c446224
mode=active
exec=\Program Files\execmulti\execmulti.exe|execif_LHEdit
  • 以下の内容を\Program Files\execmulti\execmulti.iniに追記する
[execif_LHEdit]
exec=\Program Files\execif\LHEdit\execif.exe|\Program Files\execif\LHEdit\execif_LHEdit.ini
  • 以下の内容を\Program Files\execif\execif_LHEdit.iniとして保存する
[LHEdit_1→2]
class=DoNothing
title=LHEdit_1
exec=close
exec=\Program Files\DoNothing\DoNothing.exe|-alivetime=5000 -title=LHEdit_2
exec=\Program Files\KeyInputEmulator\KeyInputEmulator.exe|Ctrl+2

[LHEdit_2→3]
class=DoNothing
title=LHEdit_2
exec=close
exec=\Program Files\DoNothing\DoNothing.exe|-alivetime=5000 -title=LHEdit_3
exec=\Program Files\KeyInputEmulator\KeyInputEmulator.exe|Ctrl+3

[LHEdit_3→4]
class=DoNothing
title=LHEdit_3
exec=close
exec=\Program Files\KeyInputEmulator\KeyInputEmulator.exe|Ctrl+4

[default]
exec=\Program Files\DoNothing\DoNothing.exe|-alivetime=5000 -title=LHEdit_1
exec=\Program Files\KeyInputEmulator\KeyInputEmulator.exe|Ctrl+1
  • 適当なボタンにExecIfを割り当てる
    • ハードキーではなく、ctrlswapminiで2タッチのどこかに割り当てる(しんじさんのアイデア)のも便利です

おまけ

ExecIfで指定するタイトルとクラス名の調べ方

  • アクションキー(カーソルキー中央の丸いボタン)を押しっぱなしにする
  • タイトルバーの、タイトルのすぐ右(アイコンのすぐ左)をタップ&ホールドする
    • 位置があっていればホールド中のゲージ(あの丸いやつ)が出ます
  • ゲージが1周したらアクションキーとタップを離す

解説

DoNothingをExecIfと組み合わせて、ExecIfだけでは実現できないトグル処理をしてみました。
サンプルのMCHARのトグル起動と似た方法ですね。ただ、これだけだと芸がないので、もう一工夫加えてみました。
今回は、フォントサイズを1→2→3→4→1・・・・とトグル処理するために「0号テキストエディタが最前面」でかつ「各DoNothingが起動中」という判定をしています。しかし、ExecIfで判定できるアプリは1つだけで、同時に複数の判定ができません。そこでExecIfを多段起動することでこの問題を解決しています。ただし、ExecIfは、ExecIf→ExecIfのように直接呼び出しても動作しません(ファイル名を変えたりしても動作しなかったので、そもそもExecIf自体が連続で起動できないっぽい)。結局、ExecIf→ExecMulti→ExecIfと、ExecMultiを間に挟むことで正しく動作させることができました。
また、DoNothingがゴミとして残らないように5秒で自動終了させています。できればDoNothingを常駐させてトグル状態をずっと保持しておきたいところなんですが、0号テキストエディタ終了時にDoNothingも終了する方法が思いつかず・・・アプリ終了時に別アプリを起動できる方法とかツールってないですかね?ご存じの方がいたら是非教えてください。なかったら誰か作ってください(待て