WSHやVBAからWshShell.exeを使ってコンソールアプリを実行する場合、コンソールが表示されてしまいます。
そのための代替案として、WshShell.Runメソッドでcmd.exeを起動し、そのリダイレクト出力されたファイルを読んで処理する という方法が下記ページにて紹介されています。

WScript.ShellのExec()で、コンソールアプリを非表示で実行するラッパー
http://scripting.cocolog-nifty.com/blog/2008/08/wscriptshellexe_7621.html

ただ、上記サイトのコードでは、呼び出し先プログラム実行中は標準出力のリダイレクト用に作成したファイルに追記書き込みできないことを利用してアプリの終了待ちを実現しています。
ただ、この場合常時標準出力にデータを出力しているアプリを呼び出した場合問題はないのですが、もし呼び出し先アプリが一時的に標準出力への出力をやめてしまった場合、リダイレクトしているテキストファイルが追記可能になってしまい、呼び出し先プログラムが終了したと見なされる場合があります。
ちゃんと呼び出し先プログラムの終了を待つには、やはりプロセスを監視するなど別の方法をとった方がいいかも。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です