2006/10/19

Run メソッド と Exec メソッドの違い

HTA で外部コマンドを実行するには Run と Exec の2種類のメソッドがありますが、ちょっと毛色が違います。
Run メソッドでは実行するウィンドウサイズを指定出来ます。
var shell = new ActiveXObject("WScript.Shell");
var command = "notepad"
shell.Run(command, 0, false);
第2パラメータの値意味
0ウィンドウを非表示にし、別のウィンドウをアクティブにする
1ウィンドウをアクティブにして表示する。ウィンドウが最小化または最大化されている場合は、元のサイズと位置に戻る
2ウィンドウをアクティブにし、最小化ウィンドウとして表示する
3ウィンドウをアクティブにし、最大化ウィンドウとして表示する
4ウィンドウを最新のサイズと位置で表示する。アクティブ・ウィンドウは切り替わらない
5ウィンドウをアクティブにし、現在のサイズと位置で表示する
6指定したウィンドウを最小化し、Zオーダー上で次に最上位となるウィンドウをアクティブにする
7ウィンドウを最小化ウィンドウとして表示する。アクティブ・ウィンドウは切り替わらない
8ウィンドウを現在の状態で表示する。アクティブ・ウィンドウは切り替わらない
9ウィンドウをアクティブにして表示する。ウィンドウが最小化または最大化されている場合は、元のサイズと位置に戻る
10アプリケーションを起動したプログラムの状態に基づいて表示状態を設定する

Exec メソッドではコマンドの標準出力を拾うことが出来ます。
var shell = new ActiveXObject("WScript.Shell");
var command = "notepad"
var OutObj = shell.Exec(command);

while (!OutObj.StdOut.AtEndOfStream) {
  divObj.innerHtml += ExifTag.StdOut.ReadLine();
}

参考: http://www.atmarkit.co.jp/fwin2k/operation/wsh05/wsh05_03.html