非GUIプログラムの実行
ふと思い立って、「非GUIのプログラムをコマンドプロンプトを表示させずに実行させる」という機能を考えてみた。
ソース:040616-command.c
Perlなどで書いたプログラムをTClockのアラームで定期実行させたい、と思うことはあるが、実行のたびにコマンドプロンプトのウィンドウが一瞬現れて消える、というのがうざったい。そこで、exe/command.cにちょっと機能を追加してみた。試したい人は、上記のCファイルをcommand.cと差し替えてほしい。関数ExecCommandStringとExecHiddenCmdPromptを参照。
アラーム、マウス、tcmenu*.txtで、ファイルの指定の前に > を付けると、cmd.exe /c ~ として実行されるようになる。次の例では、cmd.exe /c perl hoge.pl >> log.txtが実行される。なお、Windows NT/2000/XPのみ。
>perl hoge.pl >> log.txt
やってることは、ウィンドウの表示オプションをSW_HIDEにしてcmd.exeを起動しているだけ。
サーバーとやりとりするPerlスクリプトを定期実行させたいとか、ちょっと起動して終了するだけのCプログラムをGUI対応にするのが面倒とか、バッチファイルを使いたいとかいう場合を想定している。
ただし、実行するプログラムに「入力待ち」があると、隠れたcmd.exeがいつまでも終了しない、ということになる。


Comments