背景 ¶
知人の話を聞いたところ、 どうやら複数のアプリケーションを同時に起動したい需要は有るようだ。
僕個人としては「バッチファイルを書けば良いのでは」と思ったが、 どうやら万人がバッチファイルを書けるわけではないらしい。
既存ランチャーソフトウェアも複数紹介してみたが、 所謂「フリーソフト」を使ったことがない層な様で、 取り扱いに困っている様だった。 (Vector/フリーソフト100/窓の杜や、フリーソフト収録雑誌の文化は何処へ…。)
新規性 (?) ¶
下手に煩雑にすると、既存のランチャーと同様となる。 本アプリケーションの動作はなるべく単純な物のみにしようと考えた。
以下の点を重視する。
- 非常駐
- GUI/設定レス
非常駐 ¶
主記憶装置は貴重なハードウェア資源であり、常駐は多くの場合悪だ。 (近年潤沢なメモリを前提としたアプリケーションが増えているが) 避けられない場合を除き作るべきではないだろう。
キーショートカットのフックに関しては、Windowsのショートカット仕様を使う。
GUI/設定レス ¶
決して筆者がGUIやコンフィグパーサーを作るのが面倒なわけではない。 GUIや設定を作る程複雑なアプリケーションにするべきではないと考える為だ。
操作方法 ¶
本アプリケーションのリリースをzip展開すると以下のようなツリーになる。
- Sample
- +3s notepad.exe (ショートカット)
- mspaint.exe (ショートカット)
- Set1
- DropShortcutHere
- MultiShortcut(CreateShortcut).exe
MultiShortcut(CreateShortcut).exeは 起動時に同一ディレクトリ内ディレクトリの存在をスキャンし、 各ディレクトリに対して、 ディレクトリ名を自身のシェル引数に受け取るショートカットを作成する。
- Sample
- +3s notepad.exe (ショートカット)
- mspaint.exe (ショートカット)
- Set1
- DropShortcutHere
- MultiShortcut(CreateShortcut).exe
- Sample (ショートカット)
- Set1 (ショートカット)
ショートカットが叩かれた時、 アプリケーションは引数にあるディレクトリ内をショートカットをスキャン、 実行する。
遅延起動 (2020-02-19追加) ¶
重量級アプリケーションを複数同時に起動しようとすると、 IOがSequencialではなくなり、ヘッドが忙しくなる事が予想される。 (どうやら最近のストレージにはヘッドがついていないようだが、 IO Controllerにも優しくしてあげよう。)
+[指定秒数]s
がファイル名先頭にある場合、指定秒数後に起動する。
所感 ¶
本当は自身のショートカットも入れ子に出来るようにしたかったが、 ループ検知の適切な実装を思いつかなかった為、現状入れ子を禁止している。
何か良い方法はないだろうか。
Special thanks ¶
Idea, Logo: @FUMI23_VRC