たぶん世界一早いCondExec紹介

グッドモーニングエヴリワン! DORです。
DORの興味を刺激しまくる新ツール「CondExec」が誕生しました。以前、この記事のコメントで作者様が紹介してくださったものです。
で、このツールは、以前から活用しているExecIfのいとこみたいなものでして、作者様もマニュアルで以下のように説明しています。

  ExecIf(ももたろさん製作)と似ていますが、本ソフトには以下のような特徴があります。
   ・複数条件を順にチェックするのではなく、指定した1つの条件のみをチェックする
   ・現在の条件による処理だけではなく、指定条件に変化するのを待っての処理ができる
   ・条件に一致する場合と一致しない場合の動作を個別に記述できる
   ・ごちゃごちゃと機能を詰め込んであるため指定方法が分かりづらい・・・

要するに、

  • 複数の条件を簡易チェックできるExecIf
  • 1つの条件を詳細チェックできるCondExec

といった感じです。

で、どう詳細かというと、

  • 常駐させてアプリの起動/終了/アクティブ化/非アクティブ化を監視できる
  • 監視のタイムアウト処理も行える
  • ExecIfでは指定できない背面起動時が指定できる

って感じです。このツールだけで例えば、

  • アプリ終了時に別アプリを起動する
  • アプリ終了時に別アプリも終了する
  • アプリを開き直す
  • アプリが背面動作時だけ処理を行う
  • 一定時間内にアプリの状態が変わったら処理を行う

が行えます。さらにExecIf、ExecMulti、DoNothing等と組み合わせることで、活用の幅はまさしく無限大に!(やや大げさ)


ということでDORは全力でCondExecを応援します(活用例もそのうち掲載するはずです、多分)



以下、自分用覚え書き

設定ファイル

設定ファイルには各処理に応じたセクションを複数定義します。

  • [セクション名]
    • 項目名=値
    • 項目名=値

セクションは大きく3つの要素で構成されます。

    • [セクション名]
    • チェック条件
    • 実行する処理
チェック条件

条件は大きく2つの要素で構成されます。

  • チェック対象となるアプリ
    • class(クラス名)
    • title(タイトル)
  • アプリをチェックする方法
    • check(チェック方法)
      • current(既に〜になっている)
      • change(途中で〜になったら)
      • both(その両方)
    • trigger(チェックする状態)
      • running(起動中)
      • closed(終了・未起動)
      • active(アクティブ)
      • inactive(非アクティブ)
実行する処理

以下の3パターンが設定できます。

  • exec(条件に当てはまった場合)
  • ontimeout(指定時間内に条件に当てはまらなかった場合)
    • check change/bothで使えます、check currentでは無効です
  • onunmatch(条件に当てはまらなかった場合)

それぞれ以下のように実行内容を指定します

    • ファイル名|引数(アプリ実行)
    • nothing(何もしない)
    • activate(アプリをアクティブ化)
    • inactive(アプリを非アクティブ化)
    • close(アプリ終了)

execの場合だけ、以下が指定できます。

  • sleep(execを行うまでの待機時間)

また、ontimeoutに関連して以下の設定が行えます。

  • timeout(ontimeoutまでの待ち時間)
  • polling(チェックする間隔、デフォルトで50ミリ秒)

起動パラメータ

「*」がついているのがデフォルト値です。

  • -execmode(実行モード)
    • TOGGLE*(起動/終了のトグル)
    • OPEN(起動)
    • CLOSE(終了)
    • CLOSEALL(全て終了)
  • -showicon(Todayへのアイコン表示)
    • TRUE*(アイコンを表示する)
    • FALSE(アイコンを表示しない)
  • -showtask(タスク一覧への表示)
    • TRUE(タスクを表示する)
    • FALSE*(タスクを表示しない)
  • -section(処理対象セクション)
    • セクション名(デフォルト値:default)
    • 必ず最後に指定すること!