fenrirが便利だと思うのは、ファイルの検索が簡単というのもあるのだけれど、拡張子やパスに合わせて同じ動作でも違う処理ができることだ。例えば同じEnterキーでも、.txtならエディターで、.exeならバイナリエディターで、.bmpならペイントで。前から拡張子に対して複数関連付けをさせるソフトはあるにはあったけど、個人的にはポチSの登場がブレイクスルーになったような気がする。そしてファイル検索ツールとの融合。ほとんどランチャー代わりに使用できる。こういう柔軟さはコマンド登録型のランチャーにはなかなか無い。CraftLaunchEXにもどうにか取り込めないかと、仕様を考えてみた。
1. LancherMode.OnExecuteをハックする。
ShellExecuteをする直前にrequest_nameを書き換える感じ。拡張子と実行されるコマンドに必要な情報は、(正規表現、実行するコマンド)のタプル形式でいいんじゃないかと思う。前もってiniか何かを読み込んで設定をリスト化しておく。正規表現にパスを含めないならrequest_nameをos.path.basenameで変換する。で、設定のリストを上から順にre.searchしてマッチしたら実行するコマンド部を実行する感じ。
この関数は基本となるので、引数を一つとって関連付けされたコマンド文字列を返す関数化するといいと思う。非常に大雑把なコードはこんな感じ。あくまでも例なので動作保証はもちろん無い。


def potiSLike(path):
# 設定を読み込む処理。起動時に読み込むようにしても良いかも。
# 設定はsettinglistに(reg, cmd)の形で読み込む。
# 最終的にタプルを作れればテキストファイルでもいいし、
# ぽちSやfenrirの定義ファイルを読み込めるようにしてもいいと思う。
for reg, cmd in settinglist:
if re.search(reg, path):
return = cmd
2. clcore.ShellExecuteを上書きする。
pywin32が必要。ShellExecuteは恐らくエラーチェックのほかにはAPIに値をスルーしているだけなので、似たようなことをする関数をでっち上げた上で、第2引数の内容を書き換える。実処理はほとんど1.の場合と一緒。
3. config.pyでキー定義を変更する
config.pyでEnterのキー定義を以下のように変更する

def potiS:
s = '%(cmd)s;%(param)s' %{'cmd': potiSLike(GetValue()), 'param' : GetValue(), }
Execute(s)
mode.SetKeyDownHandler( VK_RETURN, 0, pitiS )

それぞれ一長一短あると思う。個人的には3番が一番バージョンアップ時の負担が少なそうでいいかと思う。時間ができたら部分一致検索も合わせてしっかり作りこんでみたいなぁ。